各位大佬,有个sql的问题想请教一下。比如顾客表内有cust_Id,cust_info两列。分别数据是123,food;123,null;124,null;125,null;
我要把里面cust_info都是null的cust_id选取出来结果是124,125。而不是123,因为123有一个cust_info是有值的。我想到的是为空的cust_id去left join 有值的cust_id。
想请教一下有木有更简化的办法,谢谢各位大神~~

解决方案 »

  1.   

    不知道您需要什么格式,写了2个,您看看哪个是您需要的。
    SELECT t.cust_id FROM (
    SELECT t.cust_id,MAX(t.cust_info) m FROM (
    SELECT '123' cust_Id,'food' cust_info FROM DUAL UNION ALL 
    SELECT '123',NULL FROM DUAL UNION ALL 
    SELECT '124',NULL FROM DUAL UNION ALL 
    SELECT '125',NULL FROM DUAL ) t GROUP BY t.cust_id) t WHERE t.m IS NULL ;SELECT GROUP_CONCAT(t.cust_id) FROM (
    SELECT t.cust_id,MAX(t.cust_info) m FROM (
    SELECT '123' cust_Id,'food' cust_info FROM DUAL UNION ALL 
    SELECT '123',NULL FROM DUAL UNION ALL 
    SELECT '124',NULL FROM DUAL UNION ALL 
    SELECT '125',NULL FROM DUAL ) t GROUP BY t.cust_id) t WHERE t.m IS NULL ;
      

  2.   

    select * from table where  cust_info is  null