2014-01-20 83 views
0

我有3個表users(ID,姓名),types(ID,姓名)和user_type(users_id,types_id)SQL查詢示例

我想編寫一個SQL查詢得到所有不用戶有一個類型。我知道這可能很簡單,但我無法理解它。

任何幫助

回答

1
SELECT users.name 
FROM users JOIN user_types ON users.id = user_types.users_id 
WHERE user_types.types_id != yourID 
+0

它應該發現按預期與剛剛加入,並沒有WHERE子句。 – JaTochNietDan

+0

除非使用複合條件,否則無法使用WHERE子句。如果沒有WHERE子句,它將返回兩個表中的所有用戶,而不管其類型。 – Bic

+0

user_types其多對多關係,例如:用戶ID爲'1'的類型爲'2'和'3',並且你希望過濾沒有類型3的用戶。我不確定這個查詢是否工作... – Melon

1

如何:

SELECT * FROM users 
WHERE users_id NOT IN 
    (SELECT users_id FROM user_type) 
0

你可以試試這樣

SELECT * FROM users 
WHERE users_id NOT IN (SELECT users_id FROM user_type) 
0

作爲另一種替代的東西,你可以使用EXISTSNOT EXISTS

SELECT * 
FROM users 
WHERE NOT EXISTS (SELECT * FROM user_type WHERE users.USER_ID = user_type.USER_ID) 

另一種選擇是使用左連接和檢查EXISTS

SELECT * 
FROM users AS s 
LEFT JOIN user_type AS ut 
ON s.USER_ID = ut.user_id 
WHERE ut.USER_ID IS null 

文檔和NOT EXISTS可以在這裏http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html