我需要更新随机选择的样本表中的字段。 如果我运行此查询,它将正确返回选定的57行:
SELECT * FROM table WHERE item1 = 'XX' AND item2 = 'JJJ' ORDER BY random() LIMIT (57)
我现在要做的是将SELCT语句应用于使用'YY'更新item1,但仅适用于57个随机选择的行。 我试试这个:
UPDATE table
SET item1 = 'YY'
WHERE id_item = (SELECT id_item FROM table WHERE item1 = 'XX' AND item2 = 'JJJ'
ORDER BY random() LIMIT (57))
但它返回错误:“用作表达式的子查询返回的多行”。
如何为随机行数更新表格? 提前致谢
答案 0 :(得分:2)
将“=”运算符更改为IN。
UPDATE table
SET item1 = 'YY'
WHERE id_item IN (SELECT id_item
FROM table WHERE item1 = 'XX' AND item2 = 'JJJ'
ORDER BY random() LIMIT (57))
答案 1 :(得分:0)
将=更改为“in”。
您需要将其更改为:
UPDATE table SET item1 = 'YY' WHERE id_item in (SELECT id_item FROM table WHERE item1 = 'XX' AND item2 = 'JJJ' ORDER BY random() LIMIT (57))
答案 2 :(得分:0)
您可能需要使用IN运算符而不是= for WHERE子句。
UPDATE table
SET item1 = 'YY'
WHERE id_item IN (SELECT id_item FROM table WHERE item1 = 'XX' AND item2 = 'JJJ'
ORDER BY random() LIMIT (57))**