Dyl*_*lan 6 mysql join group-concat mysql-error-1111
这可能吗?
我有2个表,客户和订单.现在,我想在客户中填写该客户的所有订单ID(以逗号分隔).
我试过这样的东西,但它不起作用:
UPDATE customers AS c
LEFT JOIN orders AS o ON o.customerid=c.customerid
SET c.orders = GROUP_CONCAT(DISTINCT o.orderid)
Run Code Online (Sandbox Code Playgroud)
我得到'无效使用群组功能'.
PS.我知道总是在SELECT/JOIN中动态获取GROUP_CONCAT值会更好,但我只是想知道我是否可以用某种方式填充这个列.
小智 8
您需要在group_concat中添加订单,如下例所示
注意:group_concat(版本ORDER BY版本SEPARATOR',')
UPDATE
items i,
(SELECT pduid, group_concat(version ORDER BY version SEPARATOR ',') AS 'versions'
from items GROUP BY pduid) AS version_lookup
SET i.versions = version_lookup.versions
WHERE version_lookup.pduid = i.pduid
Run Code Online (Sandbox Code Playgroud)
这里给出的答案都不适合我,可能是因为我的情况更复杂(我需要多个连接),所以我使用了 Dennis 的解决方案,但将其拆分为一个临时表:
CREATE TEMPORARY TABLE version_lookup
SELECT pduid, group_concat(version ORDER BY version SEPARATOR ',') AS 'versions'
from items GROUP BY pduid;
UPDATE
items i, version_lookup
SET i.versions = version_lookup.versions
WHERE version_lookup.pduid = i.pduid;
Run Code Online (Sandbox Code Playgroud)
Pen*_*m10 -1
您忘记告诉 GROUP BY 子句。
UPDATE customers AS c
LEFT JOIN orders AS o ON o.customerid=c.customerid
SET c.orders = GROUP_CONCAT(DISTINCT o.orderid)
GROUP BY o.customerid
Run Code Online (Sandbox Code Playgroud)