Mysql 如何将同一个表上的两个查询连接在一起?

Mysql 如何将同一个表上的两个查询连接在一起?,mysql,select,join,Mysql,Select,Join,我有一个MySQL表,名为related_post,如下所示: +----+--------+--------+ | id | post_1 | post_2 | +----+--------+--------+ | 1 | 25 | 26 | | 2 | 25 | 27 | | 3 | 25 | 28 | | 4 | 26 | 27 | | 5 | 26 | 28 | | 6 | 27 |

我有一个MySQL表,名为related_post,如下所示:

+----+--------+--------+
| id | post_1 | post_2 |
+----+--------+--------+
|  1 |     25 |     26 |
|  2 |     25 |     27 |
|  3 |     25 |     28 |
|  4 |     26 |     27 |
|  5 |     26 |     28 |
|  6 |     27 |     28 |
|  … |     …  |     …  |
+----+--------+--------+
我需要检索给定帖子ID的所有相关帖子

如果我提供'27',我希望它返回一个值为25、26和28的单列

现在,我需要将其分为两个查询:

SELECT post_1 FROM related_post where post_2 = 27;
SELECT post_2 FROM related_post where post_1 = 27;
我想知道是否可以只执行一个查询来获得相同的结果。

尝试联合:

工会还将删除重复项;如果您不想这样做,请使用UNION ALL

尝试UNION:


工会还将删除重复项;如果您不希望这样做,那么使用UNION ALL

您可以在一个查询中使用CASE语句来完成此操作

SELECT CASE WHEN post_2 = 27 THEN post_1 ELSE post_2 END as post
FROM related_post 
WHERE post_2 = 27 OR post_1 = 27;

您可以在一个查询中使用CASE语句来完成此操作

SELECT CASE WHEN post_2 = 27 THEN post_1 ELSE post_2 END as post
FROM related_post 
WHERE post_2 = 27 OR post_1 = 27;

这比执行两个选择查询并合并它们要快,对吗?@Redandwhite是的,应该是。这比执行两个选择查询并合并它们要快,对吗?@Redandwhite是的,应该是。谢谢!这并不是我想要的一个案例陈述的公认答案,但+1是一个非常可行的答案。谢谢你,谢谢!这并不是我想要的一个案例陈述的公认答案,但+1是一个非常可行的答案。非常感谢。