MYSQL:基于带连接的select语句更新列

时间:2013-06-02 10:13:29

标签: mysql sql select

我有一个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知识非常基本,如果我遗漏了明显的东西,请道歉)

我非常感谢任何有关如何使这项工作成功的想法。

1 个答案:

答案 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