我有另一种情况,我正在寻找一个可以显示null
值的查询,
首先,我制作table1;
+---------+----------+
|id_table1| value |
+---------+----------+
| 1 | value1 |
| 2 | value2 |
| 3 | value3 |
| 4 | value4 |
| 5 | value5 |
| 6 | value6 |
| 7 | value7 |
| 8 | value8 |
| 9 | value9 |
+---------+----------+
表2:
+---------+----------+
|id_table1| value |
+---------+----------+
| P1 | valueP1 |
| P2 | valueP2 |
+---------+----------+
这是我的关系表:
+---------+----------+---------+
|id_boss | id_child | answ |
+---------+----------+---------+
| 1 | 2 | T |
| 1 | 6 | F |
| 2 | P1 | T |
| 2 | 4 | F |
| 6 | P2 | T |
| 6 | 8 | F |
+---------+----------+ --------+
我关注这个令人敬畏的answer以使我的第一个查询工作,请执行此SQLFiddle
+---------+-----------+-----------+
|id_boss | child_T | child_F |
+---------+-----------+-----------+
| value1 | value2 | value6 |
| value2 | valueP1 | value4 |
| value6 | valueP2 | value8 |
+---------+-----------+-----------+
然后这是我的新问题,
来自关系表, 比方说,我正在删除一些id_child值,所以我可以稍后填写它,
+---------+----------+---------+
|id_boss | id_child | answ |
+---------+----------+---------+
| 1 | 2 | T |
| 1 | 6 | F |
| 2 | P1 | T |
| 2 | 4 | F |
| 6 | | T |
| 6 | | F |
| 4 | | T |
| 4 | | F |
+---------+----------+ --------+
然后我正在寻找一种方法让我的查询看起来像这样:
+---------+-----------+-----------+
|id_boss | child_T | child_F |
+---------+-----------+-----------+
| value1 | value2 | value6 |
| value2 | valueP1 | value4 |
| value6 | `null` | `null` |
| value4 | `null` | `null` |
+---------+-----------+-----------+
答案 0 :(得分:2)
试试这个:
SELECT (SELECT value FROM table1 WHERE table1.id_table1 = r1.id_boss) AS id_boss,
COALESCE( (SELECT value FROM table1 WHERE table1.id_table1 = r1.id_child),
(SELECT value FROM table2 WHERE table2.id_table2 = r1.id_child)
) AS child_T,
COALESCE( (SELECT value FROM table1 WHERE table1.id_table1 = r2.id_child),
(SELECT value FROM table2 WHERE table2.id_table2 = r2.id_child)
) AS child_F
FROM r_table AS r1 , r_table AS r2
WHERE r1.id_boss = r2.id_boss AND r1.answ = 'T' AND r2.answ = 'F';
它对我有用,但如果你有问题请告诉我。