我尝试使用GROUP_CONCAT
执行以下更新查询,但失败。
任何人都可以帮助我纠正它,此外,语句必须始终以"更新"关键字开始,这也是这里的陷阱。
UPDATE firstEntry f,
objects o,
titlement_values e
SET e.customattribute12 = (
SELECT GROUP_CONCAT(DISTINCT o.minvalue)
WHERE f.ldkey = o.ld_key
AND o.TITLE_VALUEKEY = e.TITLE_VALUEKEY
AND e.TITLE_VALUE = 'ZD%'
AND f.ldkey = 13
AND e.TITLEMENTTYPEKEY = 13
GROUP BY e.title_value)
我也尝试执行下面的查询,但也没有成功:
UPDATE firstEntry f,
objects o,
titlement_values e
SET e.customattribute12 = minval
FROM (SELECT GROUP_CONCAT(DISTINCT o.minvalue) AS minval,
e.title_value
WHERE f.ldkey = o.ld_key
AND o.TITLE_VALUEKEY = e.TITLE_VALUEKEY
AND e.TITLE_VALUE = 'ZD%'
AND f.ldkey = 13
AND e.TITLEMENTTYPEKEY = 13
GROUP BY e.title_value)
下面是使用select语句连接查询中提到的3个表的表结果
| 组连接|即所有权价值|
| - ------|- ------|
| A1、A2、A3|Zd_A|
| A1、B2|Zd_B|
现在,我需要获取group_concat的值,并在列e.customattribute12中更新它,如下所示
| 即所有权价值|e.customattribute12|
| - ------|- ------|
| zd_A|A1、A2、A3|
| zd_B|A1、B2|
2条答案
按热度按时间68bkxrlz1#
由于MySQL不支持
UPDATE
语句中的FROM
子句,因此您需要重写更新:一个相关子查询就可以完成这个任务,因为它只返回一个标量值。此外,
JOIN
操作已经存在了30年,并且是既定的标准,您也应该切换到它。你在评论中提到的问题。
mjava.sql.BatchUpdateException:不能在FROM子句中指定要更新的目标表'e
它是MySQL错误1063
MySQL不喜欢更新后的表在某个地方被再次使用,我们可以通过下面的技巧来避免,因为我们强制MySql生成一个新的临时表
vfhzx4xs2#
一旦您能够确保子查询正常工作,请尝试在要更新的表和精心编制的子查询之间应用连接,以匹配“title_value”值。