大家好,
我试图用另一个select查询的结果更新表中的整列。我尝试运行的查询是:
UPDATE
clients
SET
activity = (
SELECT
IFNULL(
GROUP_CONCAT(
CONCAT(
' ',
o.event_abr,
' ',
IFNULL(CONCAT(o.quantity,'x'),''),
IFNULL(o.price,'')
)
)
,'')
FROM
clients c
LEFT OUTER JOIN
orders o
ON
(c.id = o.client_id)
WHERE
c.id = clients.id
)
我要走了 #1267 - Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '<>'
但是,如果我运行just select,它只需更改 clients.id
到某个整数
请帮忙:)
1条答案
按热度按时间sshcrbum1#
我猜您只需要一个相关的子查询:
笔记:
在mysql中,不能引用在外部更新的表
UPDATE
条款。你可以把这个表达成JOIN
,但您已经沿着子查询的路径前进了。CONCAT()
不需要与GROUP_CONCAT()
. 它需要任意数量的参数。COALESCE()
是ansi标准。因此我更喜欢它。你的
GROUP_CONCAT()
很奇怪,从一个空格开始。