【发布时间】:2020-08-17 09:03:16
【问题描述】:
我有一个名为“products”的表和另一个名为“rates”的表,它们与“products”表具有一对多的关系。对于每个产品,我在“rates”表中有两行,我想为“rates”表中的每个“product”更新一个名为“index”的布尔列为 1。
我使用了这个查询:
UPDATE ( SELECT
products.id AS productId,
products.name ,
X.`index` AS `index`,
x.id AS rateId,
x.price, x.discount
FROM products JOIN ( SELECT rates.*
FROM rates
) AS x
WHERE products.id = x.product_id
GROUP BY products.id
) AS y
SET y.index = 1
但我得到了这个错误消息:
SQL 错误 (1288) 更新的目标表 y 不可更新
我是 mysql 的新手,我不知道我的错误在哪里。谢谢你的帮助
产品表
| id | name
| 1 | chair
| 2 | bench
费率表
| id | product_id | index | value
| 1 | 1 | 0 | xx ==> index = 1
| 2 | 1 | 0 | yy
| 3 | 2 | 0 | zz ==> index = 1
| 4 | 2 | 0 | tt
我想将每个产品的索引列更新为 1
【问题讨论】:
-
您查询的目的很不明确。你想更新哪个表,在什么条件下?请提供示例数据和所需结果以澄清您的问题。
-
我更新了我的帖子@GMB
-
谢谢@ali。决定
rates中的哪些行得到index = 1的逻辑是什么? -
我只是在为我的 Web 应用程序创建虚假数据 :) @GMB
标签: mysql sql database select sql-update