2016-04-13 6 views
2

私は製品テーブルに1トンの製品を持っています。各製品にはproduct_specificationがあります。私はすべてのproduct_specification.document_type_idを '2'の値に更新する必要があります。ここでのSO熟読しながら、私が思い付いたものです:select..where..inとjoinで複数の行を更新する

update product_specifications 
set product_specifications.document_type_id = 2 
inner join products 
on products.product_specification_id = product_specifications.id 
where products.id in (
    select p.id from products as p 
    inner join product_specifications as ps 
    on p.product_specification_id = ps.id 
    where p.store_front_id = 71 
    and ps.document_type_id = 1) 

しかし、これは動作しません...

+0

どのようなエラードキュメントのですか? –

答えて

1

同じテーブルに参加しているので、2つのクエリを使用する利点はありません。あなたはUPDATEと一緒JOINを使用することができます(参照here答える)

UPDATE product_specifications ps INNER JOIN products p 
ON ps.id=p.product_specification_id 
SET ps.document_type_id = 2 
WHERE p.store_front_id = 71 AND ps.document_type_id = 1 

EDIT:

:あなたは、単一および複数の両方のテーブルに対するUPDATE構文( docs hereが)のようである知っているようにいくつかのより多くの情報

と複数テーブル構文について数行ドキュメントで

後述するように、各テーブル内の更新の更新行はtable_references条件を満足に と命名しました。ここで

は、あなたが得る程度table_references

0

あなたのクエリを少しは私の意見では正しくない、と私はあなたが構文エラーを取得する必要がありますね、あなたのために構文に従う必要があります。

update tableName join anotherTableName set ... where ... 

をして私は好きクエリが見えなければならないと思う:私はしませんでした

update product_specifications 
inner join products 
on products.product_specification_id = product_specifications.id 
set product_specifications.document_type_id = 2 
where products.id in (
    select p.id from products as p 
    inner join product_specifications as ps 
    on p.product_specification_id = ps.id 
    where p.store_front_id = 71 and ps.document_type_id = 1 
) 

このクエリをチェックしてください、しかし、私は同じクエリを何度も書いています。私は本当にそれがあなたを助けると信じています...

+1

OPはなぜ "これを試してください"? **良い答え**は、何が行われたのか、そしてなぜそれがそのように行われたのかについての説明をいつも持っています。この質問を見つけて回答を読んでいるかもしれないので、OPのためだけでなく将来の訪問者のために 。あなたのコメントは – RiggsFolly

+0

Thx!すでに説明が追加されています... –

関連する問題