【问题标题】:group concat 2 values when clause would return only 1当子句仅返回 1 时将 concat 2 值分组
【发布时间】:2013-08-25 23:07:59
【问题描述】:

我有以下数据

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 时我可以轻松做到那个

导致上述数据的情况是,起初客户 001 只有“hi”,但一段时间后添加了“all”,所以我现在想用这些数据更新客户

有一个包含客户 ID 的客户表,但是我无法在客户 ID 上设置更新标志,因为该表具有不同的数据,需要更长的时间来处理,并且上面的数据用于单独的系统

我的查询目前看起来像这样

SELECT GROUP_CONCAT(text,' ') FROM table
WHERE i = 1
GROUP BY customer_id

当 2 条记录的 i 值中只有 1 条为 1 而同时没有从 customer_id 的 002 或 003 得到任何东西时,我需要做什么才能让 customer_id 001 返回“大家好”

【问题讨论】:

    标签: mysql sql group-by group-concat


    【解决方案1】:

    我不确定您所说的“没有从客户 002 和 003 那里得到任何东西”是什么意思。以下将它们过滤掉:

    SELECT GROUP_CONCAT(text,' ')
    FROM table
    GROUP BY customer_id
    HAVING max(i) = 1;
    

    【讨论】:

      【解决方案2】:

      你可以使用EXIST()

      SELECT  customer_id, GROUP_CONCAT(text SEPARATOR ' ') result
      FROM    tableName a
      WHERE   EXISTS
              (
                  SELECT  1
                  FROM    tableName b
                  WHERE   a.customer_id = b.customer_id  AND b.i = 1
              )
      GROUP   BY customer_id 
      

      【讨论】:

        【解决方案3】:

        您可以连接所有值,并获得总的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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多