回答
SELECT * FROM item WHERE id NOT IN (SELECT parent_id FROM item)
还有其他的方式可以写这个查询,可能会更高性能。但是这应该让你开始。
它将选择在parent_id
列中找不到id
的所有记录 - 表示此记录没有子女。
SELECT [some cols]
FROM item i
LEFT JOIN item children ON children.parent_id = i.id
WHERE children.id IS NULL;
正确答案。如果parent_id被编入索引,它将是有效的。 – 2011-06-18 23:37:15
你可以提供一些围绕你的'JOIN'条件和'WHERE'子句的教育吗? –
@Jason,当然:这是技术被称为自我排斥连接。您正在向结果集添加更多信息,然后从最终结果集中消除您不需要的所有内容。下面是排除连接的一个很好的解释:http://www.xaprb.com/blog/2005/09/23/how-to-write-a-sql-exclusion-join/一旦你读到你可以在这里看到一个稍微复杂一些的示例:http://adam-bernier.appspot.com/post/38001/the-self-exclusion-join – bernie
- 1. mysql连接查询
- 2. mysql连接查询
- 3. MySql的连接查询左连接
- 4. MySQL查询左连接
- 5. Mysql连接查询问题
- 6. 使用连接mysql查询
- 7. MySQL多连接查询
- 8. 查询MYSQL连接(2表)
- 9. Mysql查询内部连接?
- 10. 连接2个MySQL查询
- 11. MySQL的左连接查询
- 12. MySQL的连接查询
- 13. MySQL连接和查询
- 14. MySQL连接查询更新
- 15. MySQL db连接查询
- 16. MySQL连接查询问题
- 17. 双连接mysql查询
- 18. MySQL查询表连接
- 19. MySQL:3表连接查询?
- 20. 带连接的Mysql查询
- 21. 内连接查询为MySQL
- 22. mysql左连接查询
- 23. MYSQL连接查询结果
- 24. 查询左连接mysql的
- 25. 左连接Mysql查询
- 26. MYSQL查询连接表
- 27. MYSQL连接查询语法
- 28. PHP连接MySQL查询
- 29. mysql连接查询与like?
- 30. mysql的连接查询
请问您可以使用连接给解决方案吗? – bob
当然可以。我建议你在原文中指定这些要求。 –
这会制造一个不必要的临时表。 – 2011-06-18 23:38:53