2014-01-14 98 views
0

我应该怎么办查询,其中Mysql的JOIN子查询

  • 我有可以没有或几行引用到它在其他表
  • 这些引用(表2)行具有colum1能(表1)行为空或日期

我想从table1所有行中的所有行column1不是null或没有行在table2中的所有行。

当然基本的SQL是这样:

SELECT table1.* FROM table1 JOIN table2 ON table2.id = table1.table2_id 

但下一步怎么走?

回答

1

你可以指望空的出现次数在查询像SUM(CASE WHEN table2.col IS NULL THEN 1 ELSE 0 END) AS nullcount,我认为table2.col是具有空的日期在其

SELECT 
    table1.*, 
    SUM(
    CASE 
     WHEN table2.col IS NULL 
     THEN 1 
     ELSE 0 
    END 
) AS nullcount 
FROM 
    table1 
    JOIN table2 
    ON table2.id = table1.table2_id 
HAVING nullcount > 0 
+0

不工作的人。创建小提琴:http://sqlfiddle.com/#!2/fdd4e/3 – makallio85

+0

@AngularAddict见[工作小提琴](http://sqlfiddle.com/#!2/fdd4e/5)之间存在其中,并且具有差 –

+0

好的。谢谢。但是,如何获得c_contact id = 2的行,因为它在c_monitoring中没有引用。其实我想要的是来自c_contact的行,在c_cmonitoring中没有行,或者所有c_monitoring结束的行都是日期,而不是空值。更新拨弄:http://sqlfiddle.com/#!2/f7b17/4 – makallio85