找不到简单的sql列

时间:2013-02-06 15:16:59

标签: mysql sql sql-update

我在这个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'但该列确实存在,我检查了拼写。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您之前未在查询中提及表products_to_categories,因此其中的所有列都是未知的。

您需要添加FROM子句或类似的东西;详细的符号取决于您使用的DBMS,我在第一次回答时没有指定。

DBMS已被识别为MySQL(基于错误号),因此在UPDATE语句的手册中描述了MySQL中的正确语法。它不使用FROM子句(但是其他DBMS也这样做)。请answer JW查看{{3}}。

答案 2 :(得分: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