1

次のようなrelated_postという MySQL テーブルがあります。

+----+--------+--------+
| 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」を含む単一の列が返されます。

今、それを 2 つのクエリに分割する必要があります。

SELECT post_1 FROM related_post where post_2 = 27;
SELECT post_2 FROM related_post where post_1 = 27;

同じ結果を得るために 1 つのクエリのみを実行できるかどうかを知りたいです。

4

2 に答える 2

3

CASEステートメントを使用して、1つのクエリでこれを行うことができます

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;
于 2013-03-08T21:52:03.327 に答える
3

試してくださいUNION

SELECT post_1 AS post FROM related_post where post_2 = 27
UNION
SELECT post_2 FROM related_post where post_1 = 27

UNION重複も削除します。これを望まない場合は、使用してくださいUNION ALL

于 2013-03-08T21:49:13.663 に答える