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 - 'where 子句'中的未知列'products_to_categories.products_id',但该列确实存在,我检查了拼写。

4

3 回答 3

5

原因是您没有products_to_categoriesUPDATE语句中指定表格。即使使用语句,您也可以加入表格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(基于错误号),因此在UPDATE语句的手册中描述了 MySQL 中的正确语法。它不使用 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 回答