今天在做项目优化的时候,遇到一个sql报错例子,如果不是常写sql语句的,可能会觉得比较坑。
例子如下:
sql语句
UPDATE pay_index_last_date
SET pay_index_last_date.start_time = '2019-03-19 14:15:00'
WHERE
id IN (
SELECT
id
FROM
yq_pay_index_last_date
ORDER BY
start_time DESC
LIMIT 0,
20
)
报错:This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
开始以为是版本问题,但是和朋友讨论了下,可能是在同时查和改 一个表。加个别名包一层看看是否可行
所以抱着试一试的心态,修改下sql语句:红色部分是新加的
UPDATE yq_pay_index_last_date
SET yq_pay_index_last_date.start_time = '2019-03-19 14:15:00'
WHERE
id IN (
SELECT
a.id
FROM
(
SELECT
id
FROM
yq_pay_index_last_date
ORDER BY
start_time DESC
LIMIT 0,
20
) AS a
)
问题解决。