【发布时间】:2017-07-08 06:10:25
【问题描述】:
我需要帮助,我想知道如何从 2 列中删除与 MySQL 表基上的前一行或列值匹配的下一行或列值。
因此,如果下一行/列值/结果包含与先前行/列值/结果相同的值,它将被删除,但如果下一列与前一列值/结果都不匹配,不应删除该行。该条件的正确查询是什么?
我正在尝试首先进行选择查询,以验证数据,这是我对选择的查询。我的查询是否适合选择?
SELECT current_row.row, current_row.id, current_row.column1,
current_row.column2, previous_row.row, previous_row.id,
previous_row.column1, previous_row.column2
FROM
(SELECT @rownum:=@rownum+1 row, a.*
FROM MyTable a, (SELECT @rownum:=0) r
ORDER BY unix_time, id
) as current_row
LEFT JOIN
(SELECT @rownum2:=@rownum2+1 row, a.*
FROM MyTable a, (SELECT @rownum2:=0) r
ORDER BY unix_time, id) as previous_row
ON (current_row.id = previous_row.id)
AND (current_row.column1 = previous_row.column1)
AND (current_row.column2 = previous_row.column2)
AND (current_row.row = previous_row.row - 1)
LIMIT 10;
非常感谢您的任何帮助!
干杯!
【问题讨论】:
-
mytable中的ids 是否有漏洞和删除?你会尝试一遍又一遍地重复使用这个查询吗? -
@MohaMad - 是的,基本上这个查询需要在 cron 作业或基本上在 bash 中运行。但是,我真的需要知道,我怎样才能基本上删除。
-
@MohaMad - 顺便说一句,目前没有删除 ID。
-
@Strawberry - 那么,您提供此链接是什么意思?您是否发现我提供的不是完整且可验证的示例来解决问题或给出我可以使用的正确答案? :)