1

このSQLで何が間違っていますか:

Update products 
Set products.products_status = 0
Where products.products_id = products_to_categories.products_id And
products_to_categories.categories_id = 114

私が得ているエラーは次のとおりです: #1054 - 不明な列 'products_to_categories.products_id' in 'where clause' ですが、その列は存在するため、スペルを確認しました。

4

3 に答える 3

5

products_to_categoriesその理由は、UPDATEステートメントでテーブルを指定しなかったためです。updateステートメントでもテーブルに参加できますが、試してみてください、

Update  products a
        INNER JOIN products_to_categories b
            ON a.products_id = b.products_id
Set a.products_status = 0
Where b.categories_id = 114
于 2013-02-06T15:18:16.290 に答える
2

クエリで前にテーブルについて言及していないため、テーブルproducts_to_categories内のすべての列が不明です。

FROM 句などを追加する必要があります。詳細な表記は、最初に回答したときに指定されていなかった、使用している DBMS によって異なります。

DBMS は (エラー番号に基づいて) MySQL として識別されているため、MySQL での正しい構文は、UPDATEステートメントのマニュアルに記載されています。FROM 句を使用しません (ただし、他の DBMS は使用します)。JWの回答を参照してください。

于 2013-02-06T15:18:54.903 に答える
0

更新しているテーブルではなく、別のテーブルに存在します。あなたがやろうとしているのは、参加による更新です。使用しているデータベースに応じて、構文は異なります。

たとえば、疑似構文は次のとおりです。

Update products,   products_to_categories
Set products.products_status = 0
Where products.products_id = products_to_categories.products_id And
products_to_categories.categories_id = 114
于 2013-02-06T15:20:16.873 に答える