回答
NOT IN(選擇CATEGORIES.item_id)
不知道這是不是上面的join快...但它的工作原理。
這就是我也會這樣做的,而且它簡單得多。 – 2009-06-09 20:18:36
如果性能很重要...分析兩個版本。也就是說,我的第一個(也可能是唯一的)擺動就是NOT IN。 – Adrien 2009-06-09 20:22:06
我更喜歡在NOT IN中使用LEFT JOIN,因爲在過去,我已經使用不使用索引的查詢進行了刻錄,並且普通連接通常會正確使用索引。我對mysql不太瞭解,知道哪個運行得更快,但是如果兩者都使用索引,他們將完全相同的執行計劃。 – 2009-06-09 20:26:42
這將選擇項目表中的所有內容,並僅選擇與連接相匹配的類別中的記錄。然後過濾出空值。
Select Item.Id
FROM ITEMS LEFT OUTER JOIN CATEGORIES On
Items.Id = Categories.items_id
where categories.items_id is null
MySQL字段不區分大小寫。該代碼真的很sl so,所以我批准你的downvote。 – 2009-06-09 20:20:28
+1,我喜歡通過NOT IN的左連接方法 – 2009-06-09 20:23:46
試試這個:
SELECT
i.*
FROM Items i
LEFT OUTER JOIN Categories c ON i.id=c.items_id
WHERE c.items_id is NULL
如何
SELECT id
, name
FROM ITEMS
WHERE NOT EXISTS(SELECT 1 FROM CATEGORIES WHERE Categories.items.id = ITEMS.id)
這隻會帶回沒有在分類表中的至少一個輸入項
SELECT items.id
FROM items
WHERE NOT EXISTS(SELECT *
FROM categories
WHERE items.id = categories.items.id)
這是一樣的麥克加入到類別表Pone和KM列出,但我覺得這更可讀。
SELECT * FROM Items
WHERE id NOT IN (SELECT items_id FROM Categories)
- 1. 選擇從一個表一個MySQL行基於另一個
- 2. 選擇基於另一個表的值從另一個表列
- 3. Mysql基於從另一個表中選擇更新所有行
- 4. 如何從一個表中選擇所有行,計算基於另一個表
- 5. jQuery:如何在第一個選擇中基於類選擇另一個選項
- 6. 選擇基於現場另一個表
- 7. 選擇基於另一個表
- 8. ajax選擇基於另一個選擇
- 9. LINQ選擇基於另一個選擇
- 10. 基於從另一個表中選擇的更新表
- 11. 基於另一個從兩個表中選擇數據
- 12. Mysql的選擇和()從另一個表
- 13. MySQL的 - 如何選擇基於另一個選擇數據(子選擇?)
- 14. 從一個表基於另一個表中選擇不同的值
- 15. 從表中選擇日期基於另一個表
- 16. 如何從MySQL中的另一個表過濾一個表中選擇行?
- 17. 從另一個表中選擇不在另一個表中
- 18. mysql從另一個表中選擇一行的多個列
- 19. MySQL的一個表中選擇字段不在另一個表
- 20. linq查詢基於另一個列表從一個列表中進行選擇
- 21. 加入計數從一個表從另一個選擇 - mysql的
- 22. 基於另一個選擇框中的選擇填充一個選擇框 - jQuery?
- 23. 基於值從另一個表格中選擇列名稱
- 24. 限制基於從另一個表中選擇值
- 25. 從一個表中選擇所有字段,並從mysql中的另一個表中選擇一個字段
- 26. 如何從MySQL中的另一個表中只選擇第一個匹配值?
- 27. MySQL從一個表中選擇基於來自另一個表的ID表的數值
- 28. MySQL的:基於從另一個表中的多個值
- 29. 如何基於mysql中的另一個表來統計一個表中的行
- 30. 如何選擇基於另一個選擇值同月值
你真的可以在類別表中有一個名爲「items.id」的列嗎? – 2009-06-09 20:15:00
對不起,編輯它以反映現實:) – 2009-06-09 20:15:49