[英]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.