gpt4 book ai didi

mysql - 如何修复此 MySQL 查询使其正常工作?

转载 作者:行者123 更新时间:2023-11-29 02:09:02 25 4
gpt4 key购买 nike

我有以下查询:

UPDATE lessonstatus
INNER JOIN user ON lessonstatus.user_id = user.user_id
SET user_id = (SELECT user_id FROM user WHERE username = 'too_many_accounts')
WHERE last_name = 'stupid'
AND first_name = 'user'
AND username != 'too_many_accounts'
AND lessonstatus.lesson_id NOT IN (SELECT lesson_id FROM lessonstatus WHERE user_id = 1);

但是,我在尝试执行它时遇到以下错误:

Error Code : 1093
You can't specify target table 'lessonstatus_rtab' for update in FROM clause

我将如何修复此查询以使其正常工作?

最佳答案

您不能从您正在同一查询中更新的表(即使在子查询中)SELECT。这就是错误“无法指定目标表”的含义。

但是你可以在UPDATE语句中多次加入userlessonstatus,并创造性地使用加入条件来挑出单独的行你想要的。

用连接模拟NOT IN 的方法是执行LEFT OUTER JOIN。如果该连接的右侧不匹配,则 NOT IN 将为真。

UPDATE lessonstatus l1
INNER JOIN user u1 ON (l1.user_id = u1.user_id)
INNER JOIN user u2 ON (u2.username = 'too_many_accounts')
LEFT OUTER JOIN lessonstatus l2
ON (l1.lesson_id = l2.lesson_id AND l2.user_id = 1)
SET l1.user_id = u2.user_id
WHERE u1.last_name = 'stupid' AND u1.first_name = 'user'
AND u1.username != 'too_many_accounts'
AND l2.lesson_id IS NULL; -- equivalent to "l NOT IN l2"

nb:我已经测试了这个查询的语法,但没有使用真实数据。无论如何,它应该可以帮助您入门。

关于mysql - 如何修复此 MySQL 查询使其正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/269440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com