簡體   English   中英

如何進行適當的UPDATE查詢?

[英]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
                   );

筆記:

  • 在MySQL中,您不能在UPDATE子句之外引用正在更新的表。 您可以將其表示為JOIN ,但是您已經走過了子查詢的道路。
  • GROUP_CONCAT()不需要CONCAT() GROUP_CONCAT() 它需要任意數量的參數。
  • COALESCE()是ANSI標准。 因此,我更喜歡它。
  • 您的GROUP_CONCAT()很奇怪,以空格開頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM