如何仅使用“group_concat”过滤表 mysql 中的行
Posted
技术标签:
【中文标题】如何仅使用“group_concat”过滤表 mysql 中的行【英文标题】:how to use 'group_concat' only to filtered rows from a table mysql 【发布时间】:2012-11-11 13:06:09 【问题描述】:它有一列 IsDisabled
我只想将 group_concat
用于 IsDisabled=0
的行
目前我正在使用
select parentid,group_concat(REPLACE(WhatDoYouSell, ',', '')) sales from table_name
group by parentid
如果该行只有IsDisabled=0
,我想使用group_concat 到WhatDoYouSell
列
我试过了
select parentid,group_concat(REPLACE(WhatDoYouSell, ',', '')) sales from table_name
where IsDisabled=0
group by parentid
如果recoeds之一IsDisabled =1
,查询似乎忽略了所有group by parentid records
【问题讨论】:
【参考方案1】:用内部条件试试这个查询 -
CREATE TABLE table_name(
parentid INT(11) DEFAULT NULL,
WhatDoYouSell INT(11) DEFAULT NULL,
IsDisabled INT(11) DEFAULT NULL
);
INSERT INTO table_name(parentid, WhatDoYouSell, IsDisabled) VALUES
(1, 1, 0),
(1, 2, 1),
(1, 3, 0),
(2, 1, 1),
(2, 2, 1);
SELECT
parentid,
GROUP_CONCAT(IF(IsDisabled = 0, WhatDoYouSell, NULL)) sales
FROM
table_name
GROUP BY
parentid;
+----------+-------+
| parentid | sales |
+----------+-------+
| 1 | 1,3 |
| 2 | NULL |
+----------+-------+
【讨论】:
我稍微简化了表格,WhatDoYouSell 字段创建为 INT。【参考方案2】:试试这个:
SELECT parentid,GROUP_CONCAT(REPLACE(WhatDoYouSell, ',', '')) sales
FROM (SELECT parentid, WhatDoYouSell FROM table_name
WHERE IsDisabled=0 ) AS A
GROUP BY parentid
【讨论】:
不可能。上传您的创建表脚本,其中包含执行我的查询后获得的输出示例数据。以上是关于如何仅使用“group_concat”过滤表 mysql 中的行的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 group_concat 和左连接计算 mysql 查询的结果
GROUP_CONCAT 和 FIND_IN_SET,多个连接
如何包含两个表中的所有值? group_concat 和其他值