【发布时间】:2019-11-03 22:21:58
【问题描述】:
您好,我遇到了 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
没有出现语法错误,但没有改变任何行,不知道为什么。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。请提供样本数据和期望的结果。三个随机数并没有给你太多选择。
-
您要解决的问题是持久化到数据库中的随机排序顺序还是类似的东西?听起来你想反过来做,即将所有记录初始化为空,
update draft set draft = THENUMBER where draft IS NOT NULL ORDER BY RAND() LIMIT 1- 在一个循环中