我有3個表users
(ID,姓名),types
(ID,姓名)和user_type
(users_id,types_id)SQL查詢示例
我想編寫一個SQL查詢得到所有不用戶有一個類型。我知道這可能很簡單,但我無法理解它。
任何幫助
我有3個表users
(ID,姓名),types
(ID,姓名)和user_type
(users_id,types_id)SQL查詢示例
我想編寫一個SQL查詢得到所有不用戶有一個類型。我知道這可能很簡單,但我無法理解它。
任何幫助
SELECT users.name
FROM users JOIN user_types ON users.id = user_types.users_id
WHERE user_types.types_id != yourID
如何:
SELECT * FROM users
WHERE users_id NOT IN
(SELECT users_id FROM user_type)
你可以試試這樣
SELECT * FROM users
WHERE users_id NOT IN (SELECT users_id FROM user_type)
作爲另一種替代的東西,你可以使用EXISTS
或NOT 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
它應該發現按預期與剛剛加入,並沒有WHERE子句。 – JaTochNietDan
除非使用複合條件,否則無法使用WHERE子句。如果沒有WHERE子句,它將返回兩個表中的所有用戶,而不管其類型。 – Bic
user_types其多對多關係,例如:用戶ID爲'1'的類型爲'2'和'3',並且你希望過濾沒有類型3的用戶。我不確定這個查詢是否工作... – Melon