嗨,我在使用SQL UPDATE时遇到了麻烦。我想从0-2到表草稿中的列草稿中插入随机唯一数字(其中列大厅为1)。
我有这个,但是它以错误结尾:#1093-您无法在FROM子句中指定目标表“草稿”进行更新
UPDATE draft
SET draft = (
SELECT FLOOR(RAND() * 3) AS random_num
WHERE "random_num" NOT IN (
SELECT draft FROM draft
)
)
WHERE lobby = 1
RAND范围将在应用程序级别上动态生成,因此结果应如下所示:3条记录=唯一的随机0-2,9条记录=唯一的数字0-8等。
开始
ID DRAFT LOBBY
1 null 1
2 null 1
3 null 1
结果
ID DRAFT LOBBY
1 1 1
2 2 1
3 0 1
请帮忙吗?
编辑
我将查询更新为此:
UPDATE draft
SET draft = (
SELECT FLOOR(RAND() * 3) AS random_num
WHERE "random_num" NOT IN (SELECT draft FROM (SELECT * FROM draft) AS temp)
)
WHERE lobby = 1
不会出现语法错误,但不会更改任何行,也不知道为什么。