有没有办法强制postgresql在“in”子句中为重复id返回repeative(duplicate)记录?

vawmfj5a  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(299)

查询结果如下

SELECT "students"."full_name" FROM "students" WHERE "students"."id" IN (1, 2, 3, 6, 785, 1, 2, 3, 785, 6)

现在只返回5个结果。
但是我想在一个查询中得到10个结果。
我该怎么做?

vmdwslir

vmdwslir1#

不能使用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;
cqoc49vn

cqoc49vn2#

答案是“不”,但是,你可以这样做:

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

但排序顺序将不确定。

相关问题