如何在 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