我正在努力深入研究“高级”-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中怎么可能?
答案 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'