我不记得如何将表连接到自身.. 我的表是:
| id | proc | value | kind |
| 1 | 1 | foo | a |
| 2 | 1 | bar | b |
| 3 | 2 | some | a |
我需要检索值 col ,其中 proc 是 $proc 并且 kind 既是 'a' 又是 'b' .. 好吧,我需要这样做(寻找 proc = 1):
| v_a | v_b |
| foo | bar |
所以我写了这个查询:
SELECT
a.value AS v_a,
b.value AS v_b
FROM
(SELECT value FROM table WHERE proc = '1' AND kind = 'a') AS a,
(SELECT value FROM table WHERE proc = '1' AND kind = 'b') AS b
并且有效,但前提是在表中我有 kind=a 和 kind=b 的两行。
但我需要如果错过一行,我将有一个空值:如果我寻找 proc=2 我必须得到:
| v_a | v_b |
| foo | NULL|
相反,通过我的查询,如果缺少 b 或 a 行,我不会得到任何信息。
我正在使用 mysql ......怎么做?
编辑: 我可以使用 UNION 子句,但是当缺少一行(种类=a 或种类=b)时,这不允许我有一个 NULL 值