我想要一个搜索'dave'的查询,将显示前三行。 'mike'和'carl'都有dave的parentid。因此显示的三行将是前三行。
+----+----------+------------+
| id | parentid| user |
+----+----------+------------+
| 1 | null | dave |
| 2 | 1 | mike |
| 3 | 1 | carl |
| 4 | 2 | rick |
| 5 | 4 | mike |
什么类型的查询可以实现此目的?嵌套查询?
答案 0 :(得分:2)
没有嵌套
select
c.*
from
YourTable c
left join YourTable p on p.id = c.parentid
where
p.user = 'dave' /* for the 'children' */ or
c.user = 'dave' /* for Dave himself */
如果你不想让Dave回来,只有孩子,你可以从where
条款中留下'c.user'。在这种情况下,您也可以将left join
更改为inner join
,但速度要快得多,尽管您可能在此查询中没有注意到它。
答案 1 :(得分:0)
Select * from
table_name as partA inner join table_name as partB on partA.id = partB.parentid
Where partA.user = "Dave" or partB.user = "Dave"