PostgreSQL:使用id从表中删除行
我有一个id为pk的bill表和一个billno列,我应该从中删除重复项 共62924行 从帐单中选择countbillno 独特的billno 59704,因此需要删除3220行 从票据中选择countdistinct billno 查询以获取副本3220 但是,当我按id删除重复项时,总数不符:- 删除重复行后的计数61385=>此处应为59704 我能知道为什么会发生这种情况吗?您似乎正在删除所有重复的行。如果希望结果集不重复,请在以下位置使用distinct: 这将返回每个具有最高id的票据的行PostgreSQL:使用id从表中删除行,sql,postgresql,duplicates,primary-key,Sql,Postgresql,Duplicates,Primary Key,我有一个id为pk的bill表和一个billno列,我应该从中删除重复项 共62924行 从帐单中选择countbillno 独特的billno 59704,因此需要删除3220行 从票据中选择countdistinct billno 查询以获取副本3220 但是,当我按id删除重复项时,总数不符:- 删除重复行后的计数61385=>此处应为59704 我能知道为什么会发生这种情况吗?您似乎正在删除所有重复的行。如果希望结果集不重复,请在以下位置使用distinct: 这将返回每个具有最高id的
我不知道为什么你的查询会过滤掉这家公司。这个问题没有提到过滤。我注意到复制品的公司代码“1”和“9”不同,因此我选择保留更高的公司代码。如果我在你的查询中使用这个逻辑,我必须按billno订购,公司代码描述,对吗?@Pavitran。是的,您将在订单中包含公司代码。
select count(*) from bill
WHERE bill.billno IN (SELECT billno
FROM bill
GROUP BY billno HAVING COUNT(*) > 1)
AND bill.company_code like '1'
select count (*) from bill
where bill.id not in
(
select id from bill
WHERE bill.billno IN (SELECT billno
FROM bill
GROUP BY billno HAVING COUNT(*) > 1)
AND bill.company_code like '1'
)
select distinct on (billno) b.*
from bill b
order by billno, id desc;