我有一个select语句,它返回文档存储中包含注释的所有项的列表(存储在单独的注释表中)。
我要做的是根据以下语句更新已发布评论的所有文档的public_document_store(skin_id)中另一列的值。
这将返回我想要更新的记录:
SELECT public_document_store_talkback.document_id,
public_document_store.section_id
FROM public_document_store
INNER JOIN public_document_store_talkback ON public_document_store_talkback.document_id = public_document_store.document_id
WHERE public_document_store_talkback.is_released = 1
AND public_document_store_talkback.is_rejected = 0
AND public_document_store.section_id = 10;
我试图像这样更新skin_id字段:
Update public_document_store SET skin_id = 6
WHERE document_id IN (Select... [as per the statement above] )
但这会返回错误:
[Err] 1241 - 操作数应包含1列
我已经尝试了基于其他答案的各种其他排列,但没有任何运气(我的SQL知识非常基本,如果我遗漏了明显的东西,请道歉)
我非常感谢任何有关如何使这项工作成功的想法。
答案 0 :(得分:1)
您的SELECT
查询只需要稍加修改即可将其转换为UPDATE
语句,
UPDATE public_document_store a
INNER JOIN public_document_store_talkback b
ON b.document_id = a.document_id
SET a.skin_id = 6
WHERE b.is_released = 1 AND
b.is_rejected = 0 AND
a.section_id = 10