mysql 基础(持续更新)

这篇博客探讨了SQL中的条件转移函数,如SUM(IF())和COUNT(IF()),用于对满足特定条件的数据进行求和和计数。同时讲解了如何使用CASE WHEN语句进行分类求和。此外,还介绍了JSON_EXTRACT()函数在处理JSON数据时的作用,展示了一系列示例,用于提取不同层级的JSON值。最后,文章提到了USING关键字在数据库关联查询中的等价性,与JOIN ON子句相比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.where条件转移

sum(if(startTime>xxx and endTime>xxx,money,0)): 满足条件的部分进行求和

count(if(startTime>xxx and endTime>xxx,1,null)):满足条件的部分进行计数

sum(if(startTime>xxx and endTime>xxx,CASE WHEN ... THEN ...,0)): 满足条件的部分进行分类求和

2.IFNULL(sum(case when xxx = '0' then 1 else 0 end),0) as num: 满足条件的累加1

3.json_extract()获取json数据key的value值,方便映射到实体类

json测试数据:

{
    "no": "7",
    "title": "运动方式",
	"text":"测试",
    "content": [{
        "text": "您平时经常进行的运动及时间",
        "item1": [{
            "text": "慢跑 / 快走 / 走跑结合",
            "type": "select",
            "value": "selected"
        }, {
            "text": "上下楼梯 / 爬山",
            "type": "multselect",
            "value": "selected"
        }],
        "item2": [{
            "text": "慢跑222走跑结合",
            "type": "text",
            "value": "慢跑2"
        }, {
            "text": "上下楼梯 / 爬山2",
            "type": "number",
            "value": "33"
        }]
    }]
}

json_extract( t.jsonstr, '$.*' ): 返回全部json的value

["7", "运动方式", [{"text": "您平时经常进行的运动及时间", "item1": [{"text": "慢跑 / 快走 / 走跑结合", "type": "select", "value": "selected"}, {"text": "上下楼梯 / 爬山", "type": "multselect", "value": "selected"}], "item2": [{"text": "慢跑222走跑结合", "type": "text", "value": "慢跑2"}, {"text": "上下楼梯 / 爬山2", "type": "number", "value": "33"}]}]]

json_extract( t.jsonstr, '$.title' ): 返回json中key=”title”的value

"运动方式"

json_extract( t.jsonstr, '$.content' ): 返回json中key=”content”的value

[{"text": "您平时经常进行的运动及时间", "item1": [{"text": "慢跑 / 快走 / 走跑结合", "type": "select", "value": "selected"}, {"text": "上下楼梯 / 爬山", "type": "multselect", "value": "selected"}], "item2": [{"text": "慢跑222走跑结合", "type": "text", "value": "慢跑2"}, {"text": "上下楼梯 / 爬山2", "type": "number", "value": "33"}]}]

json_extract( t.jsonstr, '$**.text' ): 返回最内层所有key=”text”的数据

["您平时经常进行的运动及时间", "慢跑 / 快走 / 走跑结合", "上下楼梯 / 爬山", "慢跑222走跑结合", "上下楼梯 / 爬山2"]

json_extract( t.jsonstr, '$.content[*].item1[*]' ): 返回json中key=content中item1的value

[{"text": "慢跑 / 快走 / 走跑结合", "type": "select", "value": "selected"}, {"text": "上下楼梯 / 爬山", "type": "multselect", "value": "selected"}]

3.using关键字

using等价于join操作中的on,例如两个表根据id字段进行关联,那么以下两种写法是等价的:
1)using(id)
2)on a.id=b.id
以下2个查询是等价的:
select a.name,b.age from test as a
join test2 as b on a.id=b.id

select a.name,b.age from test as a
join test2 as b using(id)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值