什么类型的查询将实现此目的?

时间:2011-08-29 22:10:07

标签: mysql

我想要一个搜索'dave'的查询,将显示前三行。 'mike'和'carl'都有dave的parentid。因此显示的三行将是前三行。

+----+----------+------------+
| id |  parentid|     user   |
+----+----------+------------+
|  1 |     null |     dave   |
|  2 |        1 |     mike   |
|  3 |        1 |     carl   |
|  4 |        2 |     rick   |
|  5 |        4 |     mike   |

什么类型的查询可以实现此目的?嵌套查询?

2 个答案:

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