我有一个表,该表由id(key),符号,方向,范围,价格,百分比列组成。我想删除符号,方向,价格和百分比相同且范围最小的数据。我将如何完成?
我一直在尝试改变这种说法:DELETE FROM aw WHERE id not in (select min(id) from aw group by symbol, direction, price, percent);
使某些东西起作用。
这是 aw 表的样本数据。根据您的描述,我认为您想丢弃ID
值分别为2、3和5的行。
ID symbol direction range price percent
1 a x 15 10 5
2 a x 20 10 5
3 b y 40 50 5
4 b y 10 50 5
5 a x 15 10 5
确定的每个组合的最小范围值symbol
,direction
,price
,和percent
。
qryMinRanges :
SELECT
aw.symbol,
aw.direction,
aw.price,
aw.[percent],
Min(aw.range) AS MinOfrange
FROM aw
GROUP BY
aw.symbol,
aw.direction,
aw.price,
aw.[percent];
…给出以下结果集:
symbol direction price percent MinOfrange
a x 10 5 15
b y 50 5 10
确定ID
这些最小范围中的每个最小范围。
qryMinID_forMinRanges :
SELECT
q.symbol,
q.direction,
q.price,
q.[percent],
q.MinOfrange,
Min(aw.ID) AS MinOfID
FROM
qryMinRanges AS q
INNER JOIN aw
ON
(q.MinOfrange = aw.range)
AND (q.[percent] = aw.[percent])
AND (q.price = aw.price)
AND (q.direction = aw.direction)
AND (q.symbol = aw.symbol)
GROUP BY
q.symbol,
q.direction,
q.price,
q.[percent],
q.MinOfrange;
…给出以下结果集:
symbol direction price percent MinOfrange MinOfID
a x 10 5 15 1
b y 50 5 10 4
因此, qryMinID_forMinRanges 应该代表您要保留的行。最终,您将从 aw中 删除ID值未包含在
qryMinID_forMinRanges中的行 。但是,首先请尝试使用该SELECT
查询来确认您定位的是正确的删除记录。
SELECT
aw.ID,
aw.symbol,
aw.direction,
aw.range,
aw.price,
aw.[percent]
FROM aw
WHERE aw.ID Not In
(SELECT MinOfID FROM qryMinID_forMinRanges);
…这给了我这个结果集:
ID symbol direction range price percent
2 a x 20 10 5
3 b y 40 50 5
5 a x 15 10 5
因此,如果看起来正确,请将其更改为DELETE查询。
DELETE *
FROM aw
WHERE
(((aw.ID) Not In
(SELECT MinOfID FROM qryMinID_forMinRanges)));
数据库引擎不需要*
after DELETE。但是,如果要使用查询设计器的预览,则需要为其指定要显示的字段规范。
如果我在这里弄错了任何细节,请采取预防措施以保护您的数据。备份很好。:-)
问题内容: 我有一个重复的表事务。我想保留具有最小id的记录,并基于四个字段DATE,AMOUNT,REFNUMBER,PARENTFOLDERID删除所有重复项。我写了这个查询,但是我不确定这是否可以有效地编写。您认为有更好的方法吗?我问是因为我担心运行时间。 问题答案: 做这样的事情可能会更有效
问题内容: 我有一个sql server数据库,我已经预加载了大量的数据行。 不幸的是,数据库中没有主键,并且表中现在有重复的信息。我不担心没有主键,但是我担心数据库中存在重复项… 有什么想法吗?(原谅我成为sql server newb) 问题答案: 好吧,这就是为什么您应该在表上拥有主键的原因之一。什么版本的SQL Server?对于SQL Server 2005及更高版本: 然后,您不必在明
问题内容: 如何从以以下方式设置的表中删除重复项? 一个工作人员可以有多个与他们相关联的type_ID,我想删除所有重复的类型。如果有重复项,我想删除具有最新条目的类型。 问题答案: 窗口函数row_number()的教科书候选: 这也照顾了一组相同的受骗者的情况。 请参阅有关data.SE的简化演示。 更新较简单的版本 事实证明,这可以简化:在SQL Server中,您可以直接从CTE中删除:
本文向大家介绍sql 删除表中的重复记录,包括了sql 删除表中的重复记录的使用技巧和注意事项,需要的朋友参考一下 遇见了表中存在重复的记录的问题,直接写sql删除时最快的,才不要慢慢的复制到excel表中慢慢的人工找呢 如下sql,找出重复的记录,和重复记录中ID值最小的记录(表中ID为自增长) 然后就可以直接删除,基本原理就是,找到重复记录的每一条记录,排除掉重复id最小的记录,删除剩余的重复
我的表中有行需要删除,因为有几列是重复的。 e、 g Col1,Col2,Col3,Col4 如果Col1、Col2和Col3是重复的,不管Col4中的值是多少,我希望删除这两个重复的。我该怎么做?
问题内容: 我有这样的桌子 我想执行一个查询,以除去所有最新的重复项。我希望你有个主意吗? 例如,查询后的表必须是这样的 问题答案: 语法可能需要调整,但是应该做到这一点。此外,您可能希望将子查询预查询到其自己的表FIRST中,然后对该结果集运行DELETE FROM。