我在用PostgreSQL。如果我在查询中有一个id,请说:

select * from public.record where id in (1,5,1);

这只会给我两行,因为id 1有重复项。但如果我想显示一组记录,其中包含:
id | value
1  |   A
5  |   B
1  |   A

不管我为什么要这么做,这有可能吗?

最佳答案

可以通过连接值来执行此操作:

with ids (id) as (
  values (1),(5),(1)
)
select r.*
from public.record r
  join ids on r.id = ids.id;

如果需要保持参数列表的顺序,则需要添加要排序的列:
with ids (id, sort_order) as (
  values
      (1, 1),
      (5, 2),
      (1, 1)
)
select r.*
from public.record r
  join ids on r.id = ids.id
order by ids.sort_order;

关于sql - 在ID IN查询中检索相同数量的记录,即使有重复也是如此,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36857624/

10-13 07:45