sql - MySQL GROUP_CONCAT 令人头痛

标签 sql mysql group-concat

为了性能,我需要为 GROUP_CONCAT 设置限制,

我需要知道是否有未包含的行。

怎么做?

编辑

让我提供一个人为的例子:

create table t(qid integer unsigned,name varchar(30));

insert into t value(1,'test1');    
insert into t value(1,'test2');    
insert into t value(1,'test3');

select group_concat(name separator ',') 
  from t 
 where qid=1;

+----------------------------------+
| group_concat(name separator ',') |
+----------------------------------+
| test1,test2,test3                |
+----------------------------------+

但是现在,我最多想将2个条目分组,并且需要知道是否有某些条目未包含在结果中:

+----------------------------------+
| group_concat(name separator ',') |
+----------------------------------+
| test1,test2                      |
+----------------------------------+

我需要知道还剩下另一个条目(在本例中是“test3”)

最佳答案

这应该可以解决问题

SELECT 
SUBSTRING_INDEX(group_CONCAT(name) , ',', 2) as list , 
( if(count(*) > 2 , 1 , 0)) as more
 FROM 
   t 
 WHERE 
   qid=1

关于sql - MySQL GROUP_CONCAT 令人头痛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1514399/

相关文章:

sql - 根据其他两个表的比较更新列中的值

java - 在 MySQL 中批量插入值

java - 如何使用MySQL数据库正确更新JTable数据?

mySql SELECT GROUP_CONCAT 查询不返回长文本单元格中的所有数据

mysql - 是否可以使用动态外键,最好/正确的做法是什么?

sql - 在 SQL Server 中将一个表连接到两个一对多关系表

sql - Hive-SUM中的ELSE

mysql - 如何在日期链表上创建唯一键

mysql - 来自 GROUP_BY 的两个 LEFT JOIN 的 GROUP_CONCAT 的奇怪重复行为

mysql - 如何破解 MySQL GROUP_CONCAT 以获取有限数量的行?