如何在 MYSQL 查询中 SELECT inside UPDATE
How to SELECT inside UPDATE in a MYSQL query
已经有多个询问它的帖子,已经给出了解决方案,它们对我之前的查询有效。
但是现在我在同一 table.
的 UPDATE 中尝试对 SELECT 进行相同的查询
以下是我尝试过的不同查询:
UPDATE usersDB.random
SET total_partners =
(
SELECT total_partners FROM usersDB.random
WHERE year = 2022
)
WHERE uid = 1
和
UPDATE usersDB.random
SET total_partners =
(
SELECT total_partners
FROM usersDB.random
AS x
WHERE year = 2022
)
WHERE uid = 1
但我每次都会收到此错误消息:
Error Code: 1093. You can't specify target table 'random' for update
in FROM clause
相同的查询,但有两个不同的查询 table 有效:
UPDATE usersDB.random
SET total_partners =
(
SELECT COUNT(*)
FROM usersDB.partners AS x
)
WHERE (month = MONTH(CURRENT_DATE()) and year = YEAR(CURRENT_DATE())) OR uid = 1
当它相同时,我怎样才能使它工作table? Mysql 的版本是 8.0
这是 table random
的样子 https://i.imgur.com/HYSS5DJ.png
我使用 Mysql Workbench 发送查询
因为你没有提供简单的测试数据Create Table/Insert Into (copypaste text)
脚本我不得不用我自己的table方案来试验。请参阅 aTemp
临时 table 我如何使用 two-level 内部 table。
Update person Set
city=(
Select Concat(now(),"-",aTemp.val1) from
(select count(*) as val1 from person) as aTemp
)
Where id=4
所以在我看来它可能会转化为这个查询。
UPDATE usersDB.random
SET total_partners=(
Select aTemp.val1 From
(SELECT count(*) as val1 FROM usersDB.random WHERE year=2022) aTemp
)
WHERE uid = 1
已经有多个询问它的帖子,已经给出了解决方案,它们对我之前的查询有效。 但是现在我在同一 table.
的 UPDATE 中尝试对 SELECT 进行相同的查询以下是我尝试过的不同查询:
UPDATE usersDB.random
SET total_partners =
(
SELECT total_partners FROM usersDB.random
WHERE year = 2022
)
WHERE uid = 1
和
UPDATE usersDB.random
SET total_partners =
(
SELECT total_partners
FROM usersDB.random
AS x
WHERE year = 2022
)
WHERE uid = 1
但我每次都会收到此错误消息:
Error Code: 1093. You can't specify target table 'random' for update in FROM clause
相同的查询,但有两个不同的查询 table 有效:
UPDATE usersDB.random
SET total_partners =
(
SELECT COUNT(*)
FROM usersDB.partners AS x
)
WHERE (month = MONTH(CURRENT_DATE()) and year = YEAR(CURRENT_DATE())) OR uid = 1
当它相同时,我怎样才能使它工作table? Mysql 的版本是 8.0
这是 table random
的样子 https://i.imgur.com/HYSS5DJ.png
我使用 Mysql Workbench 发送查询
因为你没有提供简单的测试数据Create Table/Insert Into (copypaste text)
脚本我不得不用我自己的table方案来试验。请参阅 aTemp
临时 table 我如何使用 two-level 内部 table。
Update person Set
city=(
Select Concat(now(),"-",aTemp.val1) from
(select count(*) as val1 from person) as aTemp
)
Where id=4
所以在我看来它可能会转化为这个查询。
UPDATE usersDB.random
SET total_partners=(
Select aTemp.val1 From
(SELECT count(*) as val1 FROM usersDB.random WHERE year=2022) aTemp
)
WHERE uid = 1