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