在一个查询中多次加入同一个表?

时间:2012-01-22 03:01:42

标签: mysql left-join

我正在努力深入研究“高级”-SQL',但是对于一些非常基本的东西有一点点问题。 我有一个表,其中一行指的是另一行。当然还有独特的ID,但我会跳过这些:

+----------+----------------------------+
| field    | name    |      value       |
+----------+----------------------------+
| 1        | aa      |         0        |
| 1        | ab      |         0        |
| 2        | ba      |         1        |
| 2        | bb      |         1        |
| 3        | ca      |         2        |
| 3        | cb      |         2        |
+----------+----------------------------+

我想要完成的是在我知道field=3 and name= 'ca'时获取字段。

我尝试过这样的事情:

SELECT table.value AS parent_id FROM table WHERE table.field=3 AND table.name='ca' 

这在某种程度上起作用,它列出了2:field的所有内容,然后我需要从字段中找到值1。但是如果2:字段没有任何引用(如上图所示,1:字段)那么我需要最后一个值为2:field。

在MySQL中怎么可能?

1 个答案:

答案 0 :(得分:4)

您需要的是通过在同一查询中使用相同的表TWICE进行自联接,但不同的ALIAS ......

select 
      t1.field,
      t1.name,
      t1.value as ThisIsYourParentKey,
      t2.name as ParentName,
      t2.value as GrandParentKey
   from
      YourTable t1
         left join YourTable t2
            on t1.value = t2.field
   where
      t1.name = 'a2'