自引用MySql表,其中包含父项和子项的条件

时间:2017-07-21 05:32:12

标签: mysql

我有一个关于Mysql的表,其中有自引用父/子记录:

myTable

id    |    parent_id   |  text_1 |   text_2

我需要使用此伪代码进行查询:

SELECT * FROM myTable WHERE parent_id=-1 
AND IT HAS AT LEAST ONE CHILD 
AND text_1 != 'something'
AND child.text_2 != 'somethingElse'

这里并且它至少有一个孩子意味着:至少有一行,它的parent_id等于你找到的行的id。

MySql中此伪代码的转换是什么。 Laravel eloquent的查询也没问题。

1 个答案:

答案 0 :(得分:1)

要查看某个项目是否有子项,请在父/子关系中将该表连接到自身。

SELECT 
    *
FROM myTable a
LEFT JOIN myTable b
    ON a.id = b.parent_id
WHERE (NOT b.id IS NULL) AND
    a.id = -1 AND
    a.text_1 <> 'something' AND
    b.text_2 <> 'somethingElse'