提问者:小点点

如何返回子查询结果的具体顺序


我有下表,其中包含PostID和到rootPostId的映射

CREATE TABLE "PostMap" (
    "postId" BIGINT,
    "rootPostId" BIGINT );


INSERT INTO "PostMap" ("postId","rootPostId") VALUES (1,1);
INSERT INTO "PostMap" ("postId","rootPostId") VALUES (2,1);
INSERT INTO "PostMap" ("postId","rootPostId") VALUES (3,3);
INSERT INTO "PostMap" ("postId","rootPostId") VALUES (4,1);

postId,rootPostId
1,1
2,1
3,3
4,1

我有以下疑问:

SELECT "postId"
FROM "PostMap" 
WHERE "rootPostId" = (
    SELECT "rootPostId"
    FROM "PostMap"
    WHERE "postId" = 2
    )

返回结果:

postId
1,
2,
4

我希望返回以下内容,以便返回的第一个postId是传递到查询中的相应postId(postId=2),如下所示。

返回所需结果:

postId
2,
1,
4

共1个答案

匿名用户

您可以添加:

order by (postid = 2) desc

这在Postgres和MySQL中都可以使用。