2013-11-22 109 views
0

我有兩個數據庫表 - table1和table2。對於table1中的一些記錄,我在table2中有幾行連接。對於他們中的大多數我有3行連接,但對於其中一些我有一個額外的行像列table2.field ='正確'的值。我如何連接table1和table2,如果我想結果只返回table1中的行,其中table2中沒有行,並且列值如table2.field ='correct'連接到它們?計算第二個表中的行數(如果連接的行數爲< 4或類似的東西不是一個選項)。從第二個表中缺少匹配行的表加入表

我想是這樣的:

SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 on t1.id=t2.id_t1 WHERE t2.field IS NULL 

,但它沒有工作OFC。因爲我總是在字段列中有值的行。對於連接到t2的t1中的每一行,我都有t2中的記錄行,其中t2.filed ='name'和t2.field ='type'。我需要t1中沒有連接到t2的行,其中t2.field ='correct'。

回答

1

使用NOT IN

SELECT * from t1 WHERE t1.id NOT IN(SELECT id FROM t2 WHERE t2.field = 'correct') 
+0

這沒有幫助。我不需要有匹配的行。 –

0
$sql = "SELECT t1.* FROM table1 t1 CROSS JOIN table2 t2 on t1.id=t2.id_t1 WHERE t2.field IS NULL "; 
+0

問題是t2.field永遠不會爲null,它始終有2或3行有值的行。像t2.field ='name'和t2.field ='type'一樣。我需要t1中沒有記錄的行連接到表2中的行,其中t2.field ='correct'。 –

0

SELECT T1。* FROM表1 WHERE T1 NOT EXISTS(SELECT T2 * FROM表2 T 2,其中t1.id = t2.id_t1 AND t2.field =「正確')

相關問題