我有两个表,我需要从第二个表记录更新第一个表。第二个表有多个行的连接,我需要最新的日期更新到第一个表。我有以下查询,但它锁定了数据库。第一个表有超过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
也无法完成更新。
1条答案
按热度按时间hjzp0vay1#
不需要使用多个内部联接。这应该足够了。