【发布时间】:2020-09-25 02:27:21
【问题描述】:
查询是这样的
SELECT "students"."full_name" FROM "students" WHERE "students"."id" IN (1, 2, 3, 6, 785, 1, 2, 3, 785, 6)
目前只返回 5 个结果。
但我想在单个查询中获得 10 个结果。
我该怎么做?
【问题讨论】:
标签: sql postgresql where-clause where-in
查询是这样的
SELECT "students"."full_name" FROM "students" WHERE "students"."id" IN (1, 2, 3, 6, 785, 1, 2, 3, 785, 6)
目前只返回 5 个结果。
但我想在单个查询中获得 10 个结果。
我该怎么做?
【问题讨论】:
标签: sql postgresql where-clause where-in
答案是“不”,但是,您可以这样做:
SELECT full_name
FROM "students" s
INNER JOIN (VALUES (1), (2), (3), (6), (785), (1), (2), (3), (785), (6)) v (id)
ON s.id = v.id
但排序顺序将不确定。
【讨论】:
不能使用 IN 子句,但可以使用 JOIN:
SELECT s.full_name
FROM students s
JOIN unnest(array[1, 2, 3, 6, 785, 1, 2, 3, 785, 6]) as x(id) on s.id = x.id;
更符合标准的版本是values 子句
SELECT s.full_name
FROM students s
JOIN (
values (1), (2), (3), (6), (785), (1), (2), (3), (785), (6)
) as x(id) on s.id = x.id;
【讨论】: