old城 2022-10-07 09:47 采纳率: 0%
浏览 36

in 和子查询同时使用查不出来数据

一个很蛋疼的问题,如下,最后的结果查询不来,非常让人疑惑。

使用过程随机生成数据,我怀疑时类型问题,但是在创建中使用了cast和concat都没用,直接用in (98,91)之类的可以,但是用上子查询就查不出来 了

 create table query_test(
  stu_id varchar(20) primary key comment "学号",
  stu_name varchar(20) comment "姓名",
  stu_grade int comment "成绩"
 )
 ​
 delimiter $$
 create procedure auto_insert1()
 begin
    declare i int default 1;
    while (i<1000) do 
       insert into worker.query_test values (i,substr(md5(rand()*100),1,3),rand()*100);
       set i=i+1;
    end while;
 end $$
 delimiter ;
 ​
 call  auto_insert1();
 ​
 select * from query_test where stu_id in 
 (select group_concat(stu_id) from query_test group by stu_grade having stu_grade =100)  

 
  • 写回答

4条回答 默认 最新

  • MoerPerfect 2022-10-07 15:39
    关注
        据我从你sql语句中看出,你使用了group_concat这个函数,那么你查到的stu_id会默认以逗号分隔的排列,子查询所得的数据是   ("数据1,数据2,数据3" , "数据4,数据5,数据6")  那么你前面的in只能查询到每行数据的第一个数据——数据1和数据4对应的query_test的信息,不能够将所有的数据都查询到。
    

    如果业务没分组需求的话,建议你改为:
    select * from query_test where stu_id in
    (select stu_id from query_test where stu_grade =100)
    试一试看能不能查到你想要的数据。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月7日

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突