sqlsugar mysql连接字符串_关于sqlsugar使用sql函数问题

环境:mysql数据库链接

需求:想统计数据库中的设备号,设备状态,以及设备中子设备的状态 。

分别为俩个表:

1.设备表:设备号(userId),状态 (State)

2.自设备表:设备号(userId),子设备类型(E_type),  子设备状态 (Evalue)

解决方案:

1>使用Sql语句解决

SELECTtabledevice.设备编号,

tabledevice.`终端状态 `,

GROUP_CONCAT(tabledevice.硬件状态)AS '硬件状态集合'

FROM (SELECTe.UserIdAS '设备编号',

e.StateAS '终端状态',

CONCAT(eState.E_type, ":", eState.E_value)AS '硬件状态'

FROMequipment eLEFT JOINequipmentstate eStateON e.UserId =eState.UserId

)AStabledeviceGROUP BY tabledevice.设备编号;

使用Join left  根据 userId链接俩个表,并将字段CONCAT(eState.E_type, ":", eState.E_value)  将硬件类型和状态拼接起来  得到的表数据 重命名为 表tabledevice

然后将表分组 ,分别统计为 UserId State 和状态集合、

注意 GROUP_CONCAT() 是将当前整个分组集合中的某一列,拼成一行数据。如果未分组,则默认整个表某一列全部拼在一起

2>使用SqlSugar解决

还是自己看文档不够认真找了几遍,没找到原生函数。

原本以为:会像数据类型转换一样,使用 SqlFunc 去转换数据。结果没有。哈哈

实际是SqlSugar  可以简介使用sql函数的。

例如:

List list9 = db.Queryable().Where(c => c.id < 20).GroupBy(it => it.sex).Select("Sex,count(*) Count").ToList();

恍然大悟, 一下子清楚了。使用sqlsugar解决上面的数据需求

var res = db.Queryable((s1, s2) => new object[]{

JoinType.Left ,s1.UserId==s2.UserId

}

).Select("s1.UserId,State, CONCAT(s2.E_type, \":\", s2.E_value) ashardState");var data = db.Queryable(res).Select("UserId,State,GROUP_CONCAT(hardState) ashardList "

).GroupBy(s1=> s1.UserId).ToList();

数据过滤方式和使用sql语句基本一致。

原始视图:

048b36ad59e7a1aa644159ad78787a86.png

结果如图示:

d5813464d51c6f235b03b74674d624b7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值