我試圖選擇某個類型,名稱,特定ID中具有相同名稱的條目的條目。最後一部分是我無法理解的棘手部分。Mysql查詢排除某個條目
SELECT name FROM table WHERE type = $type AND (name is not contained in an entry with id).
我想要的結果是一個特定類型,但尚未包含在當前ID中的所有名稱的集合。
我需要在這裏執行兩個查詢嗎?或者我可以將它凝聚成一個。
謝謝。
我試圖選擇某個類型,名稱,特定ID中具有相同名稱的條目的條目。最後一部分是我無法理解的棘手部分。Mysql查詢排除某個條目
SELECT name FROM table WHERE type = $type AND (name is not contained in an entry with id).
我想要的結果是一個特定類型,但尚未包含在當前ID中的所有名稱的集合。
我需要在這裏執行兩個查詢嗎?或者我可以將它凝聚成一個。
謝謝。
您可以使用此子查詢:
SELECT name
FROM table
WHERE type = $type
AND name NOT IN (SELECT entry FROM t WHERE id = $id);
你的意思是,像這樣:
SELECT name FROM table WHERE type = $type
AND name not in ('larry','moe','curly').
你能在你的架構提供更詳細一點?具體的例子總是有用的
這與Zed給出的幾乎完全一致,因爲我有一個以上的「姓名」字段在 – Dirk 2009-08-17 20:01:53
如果將多個值與一個子查詢這種方式返回行:
SELECT name FROM table
WHERE type = $type
AND (name, criteria, rank) NOT IN
(SELECT name, criteria, rank FROM t WHERE id = $id);
您必須確保列表(name, criteria, rank)
子查詢選擇的列相匹配。你不應該使用SELECT *
。
上不匹配。謝謝比爾,解決了我的問題 - 必須接受Zed的答案,但無論如何要感謝。 – Dirk 2009-08-17 20:20:21
沒問題,Zed的回答更具體到你的第一個問題。 – 2009-08-17 20:33:39
感謝Zed,還有一件事 - 如果我有多個「名稱」進行比較,該怎麼辦?類似於AND name,criteria,rank NOT IN(SELECT * FROM t ...)不起作用,我想確保名稱和條件和排名不在 – Dirk 2009-08-17 20:00:03
我知道我可以做更多的子查詢,但再次,我可以把它凝聚成一個嗎? – Dirk 2009-08-17 20:01:04