繁体   English   中英

删除满足条件的行? 的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;

更新:这是与数据示例的小提琴。

http://sqlfiddle.com/#!9/4743f/2

您想查找没有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM