[英]How to make proper UPDATE query?
大家好
我试图用另一个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
更改为某个整数即可完美运行
请帮忙 :)
我猜你只想要一个相关的子查询:
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()
不需要CONCAT()
GROUP_CONCAT()
。 它需要任意数量的参数。 COALESCE()
是ANSI标准。 因此,我更喜欢它。 GROUP_CONCAT()
很奇怪,以空格开头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.