【问题标题】:Is there a way to force postgresql to return repeatitive(duplicate) records for the repetitive ids in "IN" clause?有没有办法强制 postgresql 为“IN”子句中的重复 id 返回重复(重复)记录?
【发布时间】: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


    【解决方案1】:

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

    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
    

    但排序顺序将不确定。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-02-14
        • 2016-10-21
        • 2013-04-02
        • 2013-06-30
        • 1970-01-01
        • 1970-01-01
        • 2020-02-03
        • 2018-04-22
        • 1970-01-01
        相关资源
        最近更新 更多