![](/img/trans.png)
[英]Ranking with ties and skipping certain rows where one condition is not met in mysql
[英]Delete Rows Where Condition is Met? MySQL
我正在寻找在MySQL中进行重复数据删除的方法,但我只想保留具有特定字段中数据的记录。
表数据看起来像这样。
客户编号| 名| 姓| 最后购买日期| + 10个其他栏位。
我想查找具有相同customerID的记录,并删除没有最后购买日期的记录。 我曾尝试先选择正确的数据,然后再像这样删除,但没有运气。
SELECT customerID, `Last Purchase Date`
FROM `table 2` t1
WHERE
EXISTS (
SELECT * FROM `table 2` t2
WHERE
t2.customerID = t1.customerID
AND `Last Purchase Date` = ''
)
ORDER BY customerID DESC;
更新:这是与数据示例的小提琴。
您想查找没有Last Purchase Date
,因为这些是您将要删除的记录。 所以...
SELECT t1.customerID, t1.`Last Purchase Date`
FROM `table 2` t1
WHERE
t1.`Last Purchase Date` = ''
AND EXISTS (
SELECT t2.customerID
FROM `table 2` t2
WHERE
t2.customerID = t1.customerID
AND t2.`Last Purchase Date` <> ''
)
ORDER BY t1.customerID DESC;
对于删除,您只需删除ORDER BY
子句,然后将SELECT ... FROM
替换为DELETE FROM
。
我认为这应该有效。 您没有提供测试数据,因此我无法随时对其进行检查。 但想法是使用您已经在做的事情,并在where子句中添加额外的检查。
SELECT customerID, `Last Purchase Date`
FROM `table 2` t1
WHERE
EXISTS (
SELECT * FROM `table 2` t2
WHERE
t2.customerID = t1.customerID
AND `Last Purchase Date` = ''
) AND t1.`Last Purchase Date` <> ''
ORDER BY customerID DESC;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.