mysql - group concat 2 values when 子句只返回 1

标签 mysql sql group-by group-concat

我有以下数据

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/

相关文章:

php - 使用 Joomla 删除另一个表中的多行

php - 更新sql表时递归发送电子邮件

python - Pandas Dataframe Groupby 确定一组与另一组中的值

mysql - 我们如何在带有 GROUP BY 子句的查询中选择非聚合列,这些列在功能上不依赖于 GROUP BY 子句中的列?

mysql - 我可以使用聚合函数并在 MySQL 的一次查询中获得单独的结果吗?

python - 在Python中显示选择Mysql查询,输出漂亮且可读

java - 在引用管理表 hibernate 的用户表上插入值 1

c# - 从 c# 更新 sql 中的一个单元格

sql - 数据库表中的顺序

PHP - 在 mysqli 查询中使用数组