大家好,
我正在尝试用另一个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 '<>'
但是,如果我只运行SELECT,那么只需将clients.id
更改为某个整数,它就可以完美地工作
请帮助:)
发布于 2018-05-29 08:40:41
我猜你只是想要一个相关子查询:
UPDATE clients c
SET activity = (SELECT COALESCE(GROUP_CONCAT(' ', o.event_abr, ' ',
COALESCE(CONCAT(o.quantity, 'x'), ''),
COALESCE(o.price, '')
)
), '')
FROM orders o
WHERE c.id = o.client_id
);
备注:
UPDATE
子句之外更新的表。您可以将其表示为JOIN
,但您已经走上了GROUP_CONCAT()
不需要的subquery.CONCAT()
的道路。它需要任意数量的arguments.COALESCE()
是ANSI标准。因此我更喜欢它。GROUP_CONCAT()
很奇怪,以空格开头。https://stackoverflow.com/questions/50574634
复制相似问题