2016-03-07 92 views
-2

請任何人都可以幫助我,我對PHP很熟悉,但我不擅長它。請幫助。我有兩個表都有id,看樣,從兩個表中選擇行

表1

---------------------------------- 
    **ID** | **NAME**  | **AGE** | 
---------------------------------- 
    001 | john  | 21  | 
---------------------------------- 
    002 | erik  | 18  | 
---------------------------------- 
    003 | ella  | 19  | 
---------------------------------- 
and soon... 

表2

---------------------------------- 
    **ID** | **SUBJECT**  | **GRADE** | 
---------------------------------- 
    001 | math  | 80  | 
---------------------------------- 
    003 | english  | 83  | 
---------------------------------- 
and soon.... 

這裏的問題是,我只是想選擇從表1的行它的id不匹配在表2中。

我用這個條件,但它不會工作,我希望如此,這意味着這是錯誤的方式,

if($t1_id!=$t2_id){ 
blah blah blah... 
} 
else 
{ 
all data is match! 
} 

時,表2中的id table1中匹配它已經表明我的data is all match即使只是有table2中的一個條目。

請幫幫我。如果你不知道我如何展示我的問題,請告訴我,謝謝!

+0

嘗試此爲您查詢:'SELECT * FROM表1, table2 where table1.id = table2.id',這個查詢只能找到等級爲 – 2016-03-07 13:22:46

+0

的用戶@MohsenShakibafar你的解決方案只會找到匹配(這不是要求的)。你正在使用一種超過20歲的方法來加入你的表格 –

+0

@ t-clausen.dk你是對的,是的,它的20歲,更好的做法是'加入'只想檢查他確切想要的東西:) – 2016-03-07 13:35:14

回答

0

這兩個解決方案將在SQLSERVER工作:

解決方案1:

SELECT 
    t1.ID, t1.NAME, t1.AGE 
FROM 
    table1 t1 
LEFT JOIN 
    table2 t2 
ON t1.ID = t2.ID 
WHERE t2.ID is null 

解決方案2:

SELECT 
    ID, NAME, AGE 
FROM 
    table1 t1 
WHERE NOT EXISTS(SELECT * FROM table2 WHERE t1.ID = ID) 
+0

這太棒了!謝謝你sir t-clausen.dk!解決方案2很棒!非常感謝你.. – Frank

0

您可以使用exists子句來檢查記錄是否存在於另一個表中,例如,

select * 
from table1 t1 
where t1.id = ? 
and exists(
select * 
from table2 t2 
where t2.id = t1.id; 
); 
+1

我不認爲這是他的意思。 – sagi

+0

謝謝你讓我試試這個。 – Frank

+0

我已經解決了我的問題..也感謝你的幫助。 – Frank