如何在postgresql中匹配列数,如果大于2,则更新表。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在postgresql中匹配列数,如果大于2,则更新表。相关的知识,希望对你有一定的参考价值。

输入表 https:/i.stack.imgur.comeH6W3.jpg。 我要的输出表 https:/i.stack.imgur.comRsCb9.jpg。 我试过这样

update tb set Exception = 'Y'
select Card_No from tb
where Card_No in ( select Card_No from (select Card_No count(Left(Card_No,6)) from tb
group by Card_No having count(*)>=2)a);

上面的查询给我的操作是这样的 https:/i.stack.imgur.comvJ47z.jpg

答案

你可以这样做。

update mytable 
set exception = case when cnt > 1 then 'Y' else 'N' end
from (
    select substring(card_no, 1, 6) sub_card_no, count(*) cnt 
    from mytable
    group by 1
) t
where t.sub_card_no = substring(mytable.card_no, 1, 6)

我可能会更有效地使用窗口函数。

update mytable 
set exception = case when cnt > 1 then 'Y' else 'N' end
from (
    select card_no, count(*) over(partition by substring(card_no, 1, 6)) cnt 
    from mytable
) t
where t.card_no = mytable.card_no

以上是关于如何在postgresql中匹配列数,如果大于2,则更新表。的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Postgresql 交叉表中获取动态列数

EXCEL中怎么判断一个数是不是存在在一列数中

Postgresql从具有不同列数的2个表中选择多条记录

PostgreSQL:计算一行中包含值的列数

选择 Count (distinct col) 查询以显示结果中的行数和列数 - postgresql

excel 列数大于Z时如何使用PHP程序读取