Mysql - 加入同一个表的数据

the*_*ost 3 mysql join

我有一个表格,其中存储了所有评论.一些评论是问题,其他 - 答案.所以,我的表看起来像这样:

id  parent_id   message is_answer   answered
1   0           2x2     0           1
2   1           4       1           0
3   0           5x9     0           0
4   1           2x9     0           0
5   1           2x8     0           1
6   5           16      1           0
Run Code Online (Sandbox Code Playgroud)

结果我想得到这张表:

q_id    q_message   q_answer 
1       2x2         4
3       5x9         NULL 
4       2x9         NULL
5       2x8         16
Run Code Online (Sandbox Code Playgroud)

所以,如果它们存在,我想得到所有问题和答案.

Fli*_*mzy 5

没有什么可以阻止你将表连接到自身.

SELECT q.id AS q_id, q.message AS q_message, a.message AS q_answer
FROM table AS q
LEFT JOIN table AS a ON a.parent_id = q.id
WHERE q.is_answer = 0;
Run Code Online (Sandbox Code Playgroud)

请注意,这并不能完全显示您想要的输出...因为它显示了问题的所有答案:

+------+-----------+----------+
| q_id | q_message | q_answer |
+------+-----------+----------+
|    1 | 2x2       | 4        | 
|    1 | 2x2       | 2x9      | 
|    1 | 2x2       | 2x8      | 
|    3 | 5x9       | NULL     | 
|    4 | 2x9       | NULL     | 
|    5 | 2x8       | 16       | 
+------+-----------+----------+
6 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

您请求的输出仅显示问题1的答案"4".我不确定您是否故意这样做 - 如果是这样,您将需要一些额外的GROUP BY或其他逻辑来过滤掉您的答案不想显示.