Sql 更新查询对每一行使用相同的值
我有一个SQLite数据库,需要更新。 使用update语句应该很容易 但事情并没有按计划进行: 这是完整的查询:Sql 更新查询对每一行使用相同的值,sql,sqlite,Sql,Sqlite,我有一个SQLite数据库,需要更新。 使用update语句应该很容易 但事情并没有按计划进行: 这是完整的查询: UPDATE products_new SET name = ( SELECT products_sap.title FROM products_sap, products_new WHERE products_sap.id_a = products_new.product_id ); 作为调试方案的一部分,我正在尝试每个(子)查询 此查询(与上述更新中使用
UPDATE products_new SET name =
(
SELECT products_sap.title
FROM products_sap, products_new
WHERE products_sap.id_a = products_new.product_id
);
作为调试方案的一部分,我正在尝试每个(子)查询
此查询(与上述更新中使用的查询相同)
显示正确的记录:
SELECT products_sap.id, products_sap.title
FROM products_sap, products_new
WHERE products_sap.id_a = products_new.product_id;
例如:
id | title
----------------------
1 | Lorum Ipsum
2 | Lorum Not Ipsum
3 | Ipsum Lorum
id | name
----------------------
1 | Lorum Ipsum
2 | Lorum Ipsum
3 | Lorum Ipsum
但是:更新表中的所有我的行都具有相同的名称
值*gaps*
SELECT products_new.name from products_new;
例如:
id | title
----------------------
1 | Lorum Ipsum
2 | Lorum Not Ipsum
3 | Ipsum Lorum
id | name
----------------------
1 | Lorum Ipsum
2 | Lorum Ipsum
3 | Lorum Ipsum
所以我的问题是:
如何使用相关的
名称
值更新每一行?这是因为内部查询中的products\u new
表在UPDATE
子句中隐藏了products\u new
表。因此,您永远不会实际连接正在更新的表中的行
您需要确保尝试更新的每一行的id(product\u id
)都与包含新值的表(products\u sap
)连接:
UPDATE products_new x
SET name = (SELECT products_sap.title
FROM products_sap
WHERE products_sap.id_a = x.product_id);
我并不完全熟悉SQLite,但您可以在其他方言中执行以下操作:
UPDATE products_new SET name = products_sap.title
FROM products_new
INNER JOIN products_sap
ON products_new.product_id = products_sap.id_a
类似于:谢谢@xQbert。我确实看到了答案,但没有看到代码中的问题。我想我盯着这个问题看太久了。谢谢——它现在起作用了。我从内部查询中删除了
products\u new
:来自products\u sap,products\u new
现在是我的内部查询中的来自products\u sap
。您的答案中确实有一点输入错误:在updateproducts\u new
之后立即删除x
。它实际上是表的别名,因此您可以在内部查询中使用x
而不是products\u new
引用它。对。我想该睡觉了:)谢谢@joão。