mysql查询UPDATE,第二个表有多条记录

vulvrdjw  于 2023-05-28  发布在  Mysql
关注(0)|答案(1)|浏览(160)

我有两个表,我需要从第二个表记录更新第一个表。第二个表有多个行的连接,我需要最新的日期更新到第一个表。我有以下查询,但它锁定了数据库。第一个表有超过42K的记录,而第二个表有400K的记录。

UPDATE first_table ar
    INNER JOIN second_table fc
        ON fc.atid = ar.atid
    INNER JOIN
    (
        SELECT atid, MAX(recordingdate) maxDate
        FROM second_table WHERE recordingdate > '1900-01-01' 
        GROUP BY atid LIMIT 10
    ) b ON fc.atid = b.atid AND
            fc.recordingdate = b.maxDate
SET ar.recordingdate = fc.recordingdate 
WHERE ar.recordingdate IS NULL;

子查询运行得非常快,但当运行整个更新时,服务器抛出500错误,即使使用LIMIT也无法完成更新。

hjzp0vay

hjzp0vay1#

不需要使用多个内部联接。这应该足够了。

UPDATE first_table ar
    INNER JOIN
    (
        SELECT atid, MAX(recordingdate) maxDate
        FROM second_table WHERE recordingdate > '1900-01-01' 
        GROUP BY atid
    ) b ON ar.atid = b.atid
SET ar.recordingdate = b.maxDate 
WHERE ar.recordingdate IS NULL;

相关问题