【问题标题】:show filter values even if the data is not available in table即使数据在表中不可用,也显示过滤器值
【发布时间】:2022-04-06 03:45:00
【问题描述】:

于是就有了表及其内容如下图。

id title image
1 First row
2 Second row
3 third row

所以如果我们在表中看到只有 3 条记录,id 是 1,2,3 表中没有 4,5 的条目,因此没有数据。 询问: -

select "id", "title", "image" 
FROM "table" 
WHERE "id" IN (1, 2, 3, 4, 5)

所以表中只有 3 条记录,但 where 子句中有 5 个 id。所以期望输出如下所示:-

id title image
1 First row
2 Second row
3 Third row
4
5

因此,即使表中没有数据,如果 ID 存在于 IN 运算符选择查询中,它也需要显示为空。

【问题讨论】:

    标签: postgresql cockroachdb


    【解决方案1】:

    您不能使用 IN 运算符执行此操作,但您可以 OUTER JOIN 到 VALUES 子句或取消嵌套数组:

    SELECT id, title, image
    FROM table
    RIGHT OUTER JOIN (SELECT unnest(ARRAY[1, 2, 3, 4, 5])) as u(id)
    USING (id);
    

    这是fiddle

    【讨论】:

    • 代替 unnest(ARRAY[1, 2, 3, 4, 5])) 我们可以添加类似 unnest(ARRAY[arr])) 的东西吗? arr 是一个包含所有元素的数组。所以 arr 是动态的,必须传递给上面的查询。我在传递动态值时遇到错误。
    • @user9243500 如果已经是数组,则需要省略ARRAY,只需使用unnest($1)
    猜你喜欢
    • 2018-06-08
    • 2012-07-12
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多