2014-01-14 100 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