簡體   English   中英

MySQL Query Join從兩個表中選擇不匹配的行

[英]MySQL Query Join to select unmatched rows from two tables

我有兩張桌子如下。


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
-------------------------------------------------------------

有沒有辦法使用JOIN來獲取與上面相同的結果集?

幫助很多。

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
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作為外鍵,則可以使用它來加入而不是使用用戶名來連接表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM