![](/img/trans.png)
[英]MYSQL How do I select data from one table only where column values from that table match the column values of another table?
[英]Selecting values from one table only if a column does not match the values in the column of another table in MYSQL
我正在使用此查詢:
SELECT u.name, u.lastname, u.username
FROM users AS u, inmeeting AS i
WHERE i.memo='7' AND i.user = u.keyid
要獲取所有用戶數據(如果該用戶的keyid在該會議的表inmeeting中,即表示該用戶在場)(這就是為什么i.memo = 7)。
現在,我想編寫另一個查詢,以獲取不在該會議中的所有其他人員的所有用戶數據。 我這樣寫:
SELECT u.name, u.lastname, u.username
FROM users AS u, inmeeting AS i
WHERE i.memo='7' AND i.user <> u.keyid
但是這個查詢讓我每個用戶兩次! 我不明白我在做什么錯或怎么做正確(嗯,我以為最后一個可以用子查詢完成,但我希望有一些優雅的方法)。 有任何想法嗎?
最好使用LEFT OUTER JOIN並檢查是否不匹配(即,在LEFT JOINED表中的列的WHERE子句中檢查NULL):
SELECT u.name, u.lastname, u.username
FROM users AS u
LEFT OUTER JOIN inmeeting AS i
ON i.user = u.keyid
AND i.memo='7'
WHERE i.user IS NULL;
你可以嘗試一下
SELECT
u.name, u.lastname, u.username
FROM
users AS u
WHERE
u.keyid NOT IN (SELECT i.user FROM inmeeting WHERE i.memo='7')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.