我尝试的是生成一个SQL语句,该语句在具有重复数据的行中找到我,同时在不同的列中查找。
我的表是这样的:
ID DATE ONE TWO TRES status
-- ---------- --- --- --- -----
1 2018-02-18 21 22 23 B
2 2018-02-18 01 21 44 B
3 2018-02-18 55 66 77 B
我首先要做的是找到具有相同日期的记录......我没有问题。
问题是当我尝试比较列TW TWO和TRES以查看它是否具有共同的值时。
合乎逻辑的是,我必须比较从一到二,一到三,二到三。
在示例中,第1行和第2行具有相同的日期,第1列与DOS具有相同的值,因此必须将其状态更新为E(错误)..
'UPDATE `table` SET `status` = "E" WHERE `DATE` = `DATE`'
感谢...
答案 0 :(得分:1)
以下查询将为您提供所需的结果:
UPDATE TableName a
INNER JOIN
(
SELECT a.ID, b.ID AS ID2
FROM TableName a
INNER JOIN TableName b
ON a.Date = b.Date
AND
(
a.One = b.Two
OR a.One = b.Tres
OR a.Two = b.Tres
)
) b ON a.ID = b.ID OR a.ID = b.ID2
SET Status = 'E'
基本上,它的作用是将该表连接到子查询,该子查询具有上述条件以获取无效行,并且生成的行将再次连接到自身并更新其{{1} } status
。
这里是Demo。