如果列包含父列mysql中的`id`,则删除父id记录

时间:2016-06-21 11:58:18

标签: mysql

我有表格和记录,如下所示

模板

id       name         parent

1        template1    0
2        template2    0
3        template3    1

我想要这样的输出,

id       name         parent

2        template2    0
3        template3    1

正如您所看到的,#3有父#1,所以需要使用单个查询从查询​​中取消选择。

提前致谢。

3 个答案:

答案 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

getObjectType

答案 2 :(得分:2)

检查一下:

SELECT * FROM `templates` where id NOT IN (SELECT parent FROM `templates` where parent!=0 GROUP BY parent);