更新记录比较不同的列

时间:2018-02-19 05:00:13

标签: mysql sql

我尝试的是生成一个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`'

感谢...

1 个答案:

答案 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