我有表格和记录,如下所示
模板
id name parent
1 template1 0
2 template2 0
3 template3 1
我想要这样的输出,
id name parent
2 template2 0
3 template3 1
正如您所看到的,#3有父#1,所以需要使用单个查询从查询中取消选择。
提前致谢。
答案 0 :(得分:2)
您可以使用NOT EXISTS()
:
SELECT * FROM templates t
WHERE NOT EXISTS(SELECT 1 FROM templates s
WHERE s.parent = t.id)
或LEFT JOIN
:
SELECT t.* FROM templates t
LEFT JOIN templates s
ON(t.id = s.parent)
WHERE s.id is null
或NOT IN()
:
SELECT * FROM templates t
WHERE t.id NOT IN(SELECT parent FROM templates)
答案 1 :(得分:2)
试试这个;)
select t1.*
from templates t1
left join templates t2 on t1.id = t2.parent
where t2.id is null
答案 2 :(得分:2)
检查一下:
SELECT * FROM `templates` where id NOT IN (SELECT parent FROM `templates` where parent!=0 GROUP BY parent);