【发布时间】:2021-04-28 14:29:49
【问题描述】:
我有下表,其中包含 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
我希望返回以下内容,以便返回的 first postId 是传递给查询 (postId = 2) 的相应 postId,如下所示。
返回期望的结果:
postId
2,
1,
4
【问题讨论】:
-
典型的解决方案是在查询中添加一个“分数”列,以告知哪个结果更相关。然后你只需按分数列排序。
标签: mysql sql postgresql