2

2 番目のテーブルで category_id が 90 に等しいかどうかに基づいて 1 列を更新しようとしていますが、不明な列エラーが発生します。

ここに私のSQLがあります:

UPDATE products SET qty='20' 
WHERE products.products_id = products_to_categories.products_id AND products_to_categories.categories_id = '90'

私が得ているエラーは

「where句」の不明な列「products_to_categories.products_id」

4

5 に答える 5

2

fromSQL では、 (orupdateまたはdelete) ステートメントを使用してテーブル名を導入する必要があります。次のことを意味する場合があります。

UPDATE products
    SET qty = '20' 
    WHERE exists (select 1
                  from products_to_categories ptc
                  where ptc.products_id = products.products_id AND
                        ptc.categories_id = '90'
                 );

これを行う別の方法は、結合を使用することです。

UPDATE products p join
       products_to_categories ptc
       on  ptc.products_id = products.products_id AND
           ptc.categories_id = '90'
    SET p.qty = '20';

これは、複数の一致がある場合にうまく機能します。

于 2013-09-03T01:57:19.540 に答える
0

そのような UPDATE コマンドで 2 つのテーブルを結合することはできません。サブクエリを使用します。

UPDATE products SET qty='20' 
WHERE products.products_id IN (SELECT `ptc`.`products_id`
                               FROM   `products_to_categories` `ptc`
                               WHERE  `ptc`.categories_id = '90')
于 2013-09-03T01:57:30.343 に答える
0

結合ステートメントにテーブルを含める必要がありますproducts_to_categories.products_id。テーブルが結合されていないと見つかりません。

UPDATE products a
       INNER JOIN products_to_categories b
             ON a.products_id = b.products_id
SET    a.qty = '20' 
WHERE  b.categories_id = '90'
于 2013-09-03T01:57:42.657 に答える
0

mysql の複数テーブル構文を使用できます。

UPDATE products
JOIN products_to_categories
  ON products.products_id = products_to_categories.products_id
  AND products_to_categories.categories_id = '90'
SET qty='20'

SQLFddileでチェックされたこのクエリ構文を参照してください。

于 2013-09-03T01:59:09.253 に答える