2

我有一个 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 的了解非常基础,所以如果我在这里遗漏了一些明显的东西,我深表歉意)

任何我如何使这项工作的想法将不胜感激。

4

1 回答 1

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
于 2013-06-02T10:16:29.210 回答