+----------------------+
| post_id | message |
+----------------------+
| 1 | message 1 |
+----------------------+
| 2 | message 2 |
+----------------------+
+----------+---------+-------------------------+
| reply_id | post_id |message |
+----------+---------+-------------------------+
| 1 | 1 | reply 1 to message 1 |
+----------+---------+-------------------------+
| 2 | 1 | reply 2 to message 1 |
+----------+---------+-------------------------+
| 3 | 1 | reply 3 to message 1 |
+----------+---------+-------------------------+
| 4 | 2 | reply 1 to message 2 |
+----------+---------+-------------------------+
Run Code Online (Sandbox Code Playgroud)
我有这个两表名post和post_replies
该post_id表post_replies是FK进行PK表post
我想要做的就是找到岗位信息,并回复的一列只有
如果我运行这样的东西:
SELECT p.message, pr.message FROM `posts` AS p LEFT JOIN post_replies AS pr ON p.post_id = pr.post_id
Run Code Online (Sandbox Code Playgroud)
它会返回这样的东西
+-----------+-------------------------+
| message | message |
+-----------+-------------------------+
| message 1 | reply 1 to message 1 |
+-----------+-------------------------+
| message 1 | reply 2 to message 1 |
+-----------+-------------------------+
| message 1 | reply 3 to message 1 |
+-----------+-------------------------+
| message 2 | reply 1 to message 2 |
+-----------+-------------------------+
Run Code Online (Sandbox Code Playgroud)
有没有办法我可以得到这样的结果:
+-------------------------+
| message |
+-------------------------+
| message 1 |
+-------------------------+
| reply 1 to message 1 |
+-------------------------+
| reply 2 to message 1 |
+-------------------------+
| reply 3 to message 1 |
+-------------------------+
| message 2 |
+-------------------------+
| reply 1 to message 2 |
+-------------------------+
Run Code Online (Sandbox Code Playgroud)
如果我跑
SELECT p.message FROM `posts` AS p LEFT JOIN post_replies AS pr ON p.id = pr.post_id
Run Code Online (Sandbox Code Playgroud)
这将从post表中返回消息
或者
SELECT pr.message FROM `posts` AS p LEFT JOIN post_replies AS pr ON p.id = pr.post_id
Run Code Online (Sandbox Code Playgroud)
这将从表中返回的消息post_replies只
有可能吗?
非常感谢任何帮助
UNION 您提供的两个查询并引入正确的排序:
SELECT * FROM (
SELECT p.id, 0 x, p.message
FROM posts AS p
LEFT JOIN post_replies AS pr ON p.id = pr.post_id
UNION ALL
SELECT p.id, pr.id, pr.message
FROM posts AS p
LEFT JOIN post_replies AS pr ON p.id = pr.post_id
) x
ORDER BY 1, 2
Run Code Online (Sandbox Code Playgroud)
如果您不想重复,请将“UNION ALL”更改为“UNION”。