我有以下数据
customer_id | text | i
---------------------------
001 | hi | 0
001 | all | 1
002 | do | 0
002 | not | 0
003 | copy | 0
在我的查询中,我 group_concat
文本的值,所以我应该得到这样的结果
customer_id | text
---------------------------
001 | hi all
002 | do not
003 | copy
现在我只想 group_concat customer_ids 如果我将其中的 1 个记录设置为 1,而当 customer_id 001 的两个记录都设置为 1 时我可以轻松地做到这一点,而当只有 1 个已设置时我只得到那个
导致上述数据的情况是,起初客户 001 只有“hi”,但一段时间后添加了“all”,所以我现在想用此数据更新客户
有一个包含客户 ID 的客户表,但是我无法在客户 ID 上设置更新标志,因为该表具有不同的数据,需要更长的时间来处理,并且上面的数据用于单独的系统
我的查询目前看起来像这样
SELECT GROUP_CONCAT(text,' ') FROM table
WHERE i = 1
GROUP BY customer_id
当 2 条记录中只有 1 条的 i 值为 1 而同时没有从 customer_id 的 002 或 003 获得任何信息时,我需要做什么才能让 customer_id 001 返回“大家好”
最佳答案
您可以连接所有值,并获得总的 i
值。然后你可以按这个字段过滤,知道如果至少有一个组有一个 1 它就会出现
selec customer_id, text from
(SELECT customer_id, GROUP_CONCAT(text,' ') as text, sum(i) as total FROM table
WHERE i = 1
GROUP BY customer_id) T
where total > 0
关于mysql - group concat 2 values when 子句只返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18393661/