簡體   English   中英

僅當一列與MYSQL中另一表的列中的值不匹配時才從一個表中選擇值

[英]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.

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