是否有用于“CONTAINS”的MySQL聚合函数?

编程入门 行业动态 更新时间:2024-10-11 17:21:27
本文介绍了是否有用于“CONTAINS”的MySQL聚合函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

假设我有这个数据集

user | group -------- + ------- a@a | A a@a | B b@b | A c@c | B d@d | A d@d | B d@d | C

我想将它转换为如下表格:

user | IN_A | IN_B | IN_C -------- + ------- + ------- + ------- a@a | TRUE | TRUE | FALSE b@b | TRUE | FALSE | FALSE c@c | FALSE | TRUE | FALSE d@d | TRUE | TRUE | TRUE

我有:

SELECT()用户, IF(LOCATE('A',GROUP_CONCAT(group))> 0,TRUE,FALSE)AS IN_A, IF(LOCATE('B',GROUP_CONCAT(group) )> 0,TRUE,FALSE)AS IN_B, IF(LOCATE('C',GROUP_CONCAT(group))> 0,TRUE,FALSE)AS IN_C FROM用户 GROUP BY用户

我想知道的是,如果有更好的方法来知道聚合字段是否包含值,或者这是唯一的

解决方案

正确的做法: <$ p $ (SUM(group ='A'),TRUE,FALSE)AS IN_A, IF(SUM(group ='B' ),TRUE,FALSE)AS IN_B, IF(SUM(group ='C'),TRUE,FALSE)AS IN_C FROM用户 GROUP BY用户

Say I have this data set

user | group --------+------- a@a | A a@a | B b@b | A c@c | B d@d | A d@d | B d@d | C

I want to convert this into a table like this:

user | IN_A | IN_B | IN_C --------+-------+-------+------- a@a | TRUE | TRUE | FALSE b@b | TRUE | FALSE | FALSE c@c | FALSE | TRUE | FALSE d@d | TRUE | TRUE | TRUE

I've got:

SELECT user, IF(LOCATE('A', GROUP_CONCAT(group)) > 0, TRUE, FALSE) AS IN_A, IF(LOCATE('B', GROUP_CONCAT(group)) > 0, TRUE, FALSE) AS IN_B, IF(LOCATE('C', GROUP_CONCAT(group)) > 0, TRUE, FALSE) AS IN_C FROM users GROUP BY user

What I'm wondering is if there is a better way to known if an aggregated field contains a value, or if this is the only way?

解决方案

The right way to do it:

SELECT user, IF(SUM(group = 'A'), TRUE, FALSE) AS IN_A, IF(SUM(group = 'B'), TRUE, FALSE) AS IN_B, IF(SUM(group = 'C'), TRUE, FALSE) AS IN_C FROM users GROUP BY user

更多推荐

是否有用于“CONTAINS”的MySQL聚合函数?

本文发布于:2023-11-22 01:35:36,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   MySQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!