2013-01-11 87 views
1

我有兩個表,如下所示。MySQL查詢加入以從兩個表中選擇不匹配的行


user_id | username  | first_name | role_type 
----------------------------------------------------------- 
1   | testuser1  | testu1  | student 
2   | testuser2  | testu2  | student 
3   | testuser3  | testu3  | student 
4   | testuser4  | testu4  | student 
5   | testuser5  | testu5  | student 
6   | testuser6  | testu6  | admin 
7   | testuser7  | testu7  | admin 
----------------------------------------------------------- 

user_id | username   | approved_id 
---------------------------------------------------------------------- 
1   | testuser1  | 3B888F52-50BC-11E2-B08B-99E5B2CADDF7 
2   | testuser2  | 3B888F52-50BC-11E2-B08B-99E5B2CADDF7 
3   | testuser3  | 3B888F52-50BC-11E2-B08B-99E5B2CADDF7 
---------------------------------------------------------------------- 

我試着查詢

SELECT users.* FROM users 
WHERE users.username NOT IN(
    SELECT users_approval.username FROM users_approval 
    WHERE users_approval.approved_id = "3B888F52-50BC-11E2-B08B-99E5B2CADDF7" 
) AND users.role_type = "student" 

,並得到如下


user_id | username  | first_name | role_type 
------------------------------------------------------------- 
4   | testuser4  | testu4  | student 
5   | testuser5  | testu5  | student 
------------------------------------------------------------- 
結果210

有什麼辦法可以使用JOIN獲取與上面相同的結果集?

幫助非常appriciated。

回答

7
SELECT users.* 
FROM users 
     LEFT JOIN users_approval b 
      ON users.username = b.username AND 
      b.approved_id = "3B888F52-50BC-11E2-B08B-99E5B2CADDF7" 
WHERE users.role_type = "student" AND 
     b.approved_id IS NULL 
+1

真棒..!我對現在如何加入工作有了一些想法:P。非常感謝KJ –

+0

@LithithB歡迎你':D' –

2
SELECT 
    users.* 
FROM users as u 
LEFT JOIN users_approval as ua ON ua.id = u.id 
WHERE u.role_type = "student" AND ua.approved_id IS NULL 

假設你已經user_id說明作爲第二表的外鍵可以用來連接,而不是使用用戶名加入表

+0

你的答案都是一樣的。 :) 不管怎麼說,多謝拉 。! –

相關問題