Mysql update语句给出uknown列错误
我试图根据第二个表中的categories_id是否等于90来更新1列,但得到未知列错误 以下是我的sql:Mysql update语句给出uknown列错误,mysql,sql,Mysql,Sql,我试图根据第二个表中的categories_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' 我得到的错误是 SQL中“where子句”中的未知列“products\u to\u categorie
UPDATE products SET qty='20'
WHERE products.products_id = products_to_categories.products_id AND products_to_categories.categories_id = '90'
我得到的错误是
SQL中“where子句”中的未知列“products\u to\u categories.products\u id”必须使用
from
(或update
或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';
如果存在多个匹配项,则此方法效果更好。不能在这样的更新命令中组合两个表。使用子查询
UPDATE products SET qty='20'
WHERE products.products_id IN (SELECT `ptc`.`products_id`
FROM `products_to_categories` `ptc`
WHERE `ptc`.categories_id = '90')
您需要在join语句中包含该表,
products\u to\u categories。除非该表已联接,否则无法找到products\u 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'
您可以使用mysql的:
查看此查询语法是否已选中
内部WHERE子句中的第一个条件不是多余的吗?你是说他编写sql查询的方式只适合从一个表进行更新吗?@Itay。固定的。我想我是在
=
和存在之间进行选择,两者都做了。@gordon我都没有:)我要试试小提琴。请注意,我没有投你反对票。我不再投反对票了。@GordonLinoff好的,我把它整理好了。我正在考虑删除多表,结果弄得一团糟。谢谢你的关注。@GordonLinoff我也不投反对票,除非是危险的代码,然后我就为什么要留下评论。如果错了,我建议你改正一下。否决票是卑鄙的。顺便说一句,我注意到你是一台SQL机器!蒙戈尊重巴特警长。
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'
UPDATE products p, products_to_categories pc
SET p.qty='20'
WHERE p.products_id = pc.products_id AND pc.categories_id = '90'