sql - 在 SQL 中查找重复项并更新它们?

标签 sql sql-server select stored-procedures sql-update

我正在尝试查找表中的所有重复项并更改其中一个值。 现在我使用:

SELECT Amount
FROM Bids
GROUP BY Amount, AuctionID
HAVING ( COUNT(Amount) > 1 ) AND  (AuctionID=1)

只返回的问题

Amount
23.6500
41.8800
42.3500

而不是

Amount
23.6500
23.6500
41.8800
41.8800
42.3500
42.3500

所以我无法更新所有行。

我怎样才能像我展示的那样得到它?

谢谢, 丹

最佳答案

只需将它包装在一个 IN 查询中:

SELECT Amount
FROM Bids
WHERE Amount IN (
  SELECT Amount
  FROM Bids
  GROUP BY Amount, AuctionID
  HAVING ( COUNT(Amount) > 1 ) AND  (AuctionID=1)
)

UPDATE:添加了 UPDATE 语句

UPDATE Bids
SET Burned = 1
WHERE Amount IN (
  SELECT Amount
  FROM Bids
  GROUP BY Amount, AuctionID
  HAVING ( COUNT(Amount) > 1 ) AND  (AuctionID=1)
)

关于sql - 在 SQL 中查找重复项并更新它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831634/

相关文章:

jquery - 有 jQuery jEditable 多选插件吗?

mysql - 使用父 ID 和子 ID 加入

mysql - 检查 mysql IN 的条件是否不工作

mysql - MYSQL中如何基于一列合并值

sql - 计算两点之间的距离时出现轻微不一致

mysql - 关系划分

sql - 在 WHILE 循环中使用变量作为列名的一部分

mysql - SELECT 内的 SELECT MySQL 查询速度较慢

php - PHP 中不区分大小写的查询不起作用

sql - 使用 OPENXML 从 XML 中删除回车符号