首页 > 数据库 >MySQL 函数

MySQL 函数

时间:2024-04-14 10:11:57浏览次数:29  
标签:San +---------------+------+ -- limit MySQL warehouse SELECT 函数

汇总函数 rollup

rollup是 SQL 关键字,在 MySQL 中得用with rollup。它是group by子句的扩展,用于统计后增加一行汇总数据。

举例,现有库存表,我们按仓库名称分组,统计每个仓库的产品总量,最后来一个汇总。

mysql> SELECT * FROM inventory;
+----+---------------+---------+----------+
| id | warehouse     | product | quantity |
+----+---------------+---------+----------+
|  1 | San Jose      | iPhone  |      100 |
|  2 | San Fransisco | iPhone  |       60 |
|  3 | San Jose      | huawei  |      200 |
|  4 | San Fransisco | huawei  |      100 |
+----+---------------+---------+----------+
SELECT warehouse, SUM(quantity) sum
FROM inventory
GROUP BY warehouse WITH ROLLUP;
+---------------+------+
| warehouse     | sum  |
+---------------+------+
| San Fransisco |  160 |
| San Jose      |  300 |
| NULL          |  460 |
+---------------+------+

最后,使用COALESCE()函数将NULL值替换成一个别名。COALESCE()的功能是返回第一个不为空的值。COALESCE可接受多个参数,当只有两个参数时,功能与IFNULL一致。

SELECT COALESCE(warehouse, 'warehouseAll') warehouse, SUM(quantity) sum
FROM inventory
GROUP BY warehouse WITH ROLLUP;
+---------------+------+
| warehouse     | sum  |
+---------------+------+
| San Fransisco |  160 |
| San Jose      |  300 |
| warehouseAll  |  460 |
+---------------+------+

获取一个月的天数

SELECT DAY(LAST_DAY('2022-10-01')) AS days_in_month;

LAST_DAY获取日期月份的最后一天‘2022-10-31’;DAY获取日期的天数。

limit用法

  1. limit 1, 3: 从第索引为1的数据开始,取3条数据。
  2. limit 1 offset 3: 取1条数据,从索引为3的数据开始。
  3. limit 3: 取前3条。这个最简单常用,限制数据量返回。
SELECT * FROM employees LIMIT 1, 3; -- 取2, 3, 4条数据
SELECT * FROM employees LIMIT 1 OFFSET 3; -- 取第4条数据

find_in_set判断字符串是否包含

find_in_set判断一个字串是否在目标字符串中,且目标字符串必须由逗号分隔的,函数返回在字符串中的第一次匹配的索引位置。

SELECT FIND_IN_SET('y', 'x,y,z'); -- 返回2
SELECT FIND_IN_SET('y', 'x'); -- 返回0
SELECT FIND_IN_SET('y', 'xyz'); -- 返回0,因为字符串不是由逗号连接的

有这么一种场景,在一个查询中,前端根据userType过滤。这个userTyp是字符串类型,比如{"userType": "1,2,3"},同时查1,2,3这三种用户类型。一个用户有一或多种用户类型。

mysql> select user_type from users limit 6;
+-----------+
| user_type |
+-----------+
| 1         |
| 2         |
| 3         |
| 1,2       |
| 2,3       |
| 1,2,3     |
+-----------+

所以当查询条件是{"userType": "1,2,3"},以上用户全部都要查到。
使用MyBatis时,<foreach>中用find_in_set结合or可以处理这种场景。

<select id="findUsers" resultType="com.springboot.demo.model.User">
    select t.id, t.user_type userType
    from `users` t
    where 1=1
    and
    <foreach item="item" collection="userType.split(',')" separator="or" open="(" close=")">
        find_in_set(#{item}, t.user_type)
    </foreach>
</select>

该语句在控制台打印为

标签:San,+---------------+------+,--,limit,MySQL,warehouse,SELECT,函数
From: https://www.cnblogs.com/cloudrich/p/17492976.html

相关文章

  • 在centos7下面,安装mysql,并设置 用户名为henry
    好的,以下是在CentOS7下安装MySQL并完成你所要求的操作的详细步骤:1.**安装MySQL**:首先,使用`yum`包管理器安装MySQL:sudoyuminstallmysql-server 2.**启动MySQL服务**:安装完成后,启动MySQL服务:sudosystemctlstartmysqld 3.**设置MySQL开机自启......
  • mysql部署MGB
    基础环境node0:192.168.110.50 -->master节点node1:192.168.110.60node2:192.168.110.70MySQL版本->MySQL8.0.36在每台电脑上配置host名cat>/etc/hosts<<-'EOF'192.168.31.230n0192.168.31.231n1192.168.31.232n2EOF修改对应主机的主机名hostnamectlset......
  • MYSQL 主从同步失败:Slave_SQL_Running: No
    SHOWSLAVESTATUS\G;显示Slave_SQL_Running:No 解决方法:从主服务器查询:  SHOWMASTERSTATUS在从服务器上:changemastertomaster_host='169.254.60.151', #主库的IP地址master_user='slave', #在主库上创建的复制账号master_password='???????',......
  • [译] .NET 8 中的硬件内在函数(支持 Wasm 和 AVX-512)
    原文链接:https://devblogs.microsoft.com/dotnet/dotnet-8-hardware-intrinsics/HardwareIntrinsicsin.NET8TannerGooding[MSFT]December11th,2023译文:.NET8中的硬件内在函数坦纳·古丁[MSFT]2023年12月11日.NET在通过JIT编译器本质上理解的API提供对附加硬件功......
  • 某函数传参
    在N-API中直接从一个函数向另一个函数传递参数稍微有点复杂,因为你需要正确地处理napi_value数组和环境(napi_env)。如果你想在一个N-API函数(CallAddFunction)中构造参数并直接调用另一个N-API函数(GetAddCheckArg),并且管理这些参数的传递,你将需要手动构建一个新的na......
  • hive窗口分析函数使用详解系列二之分组排序窗口函数
    1.综述我们讨论面试中各大厂的SQL算法面试题,往往核心考点就在于窗口函数,所以掌握好了窗口函数,面对SQL算法面试往往事半功倍。已更新第一类聚合函数类,点击这里阅读hive窗口函数聚合函数类本节介绍Hive聚合函数中的第二类聚合函数:分组排序窗口函数。这些函数的用法不仅仅适用于......
  • 2024-04-13:用go语言,给定一个整数数组 `nums`, 请编写一个函数,返回一个新的数组 `counts
    2024-04-13:用go语言,给定一个整数数组nums,请编写一个函数,返回一个新的数组counts。满足以下条件:对于每个nums[i],counts[i]表示在nums[i]右侧且比nums[i]小的元素数量。输入:nums=[5,2,6,1]。输出:[2,1,1,0]。答案2024-04-13:来自左程云。灵捷3.5大体过程如下:给定......
  • Docker mysql 配置文件读取失败 [Warning] World-writable config file '/etc/mysql/c
    这个警告表明MySQL正在忽略/etc/mysql/conf.d/my.cnf这个配置文件,因为它被设置为了全世界可写。这个警告是基于安全性的考虑。当配置文件被设置为全世界可写时,任何人都可以修改它,这可能会导致安全风险,因为恶意用户可以更改MySQL的配置,从而影响数据库的行为和安全性。为了......
  • MySQL 8 显示错误代码2058
    在使用mysql-uroot-P3307-proot和SQLyong连接MySQL时报错1.在MySQL8.3CommandLineClient登录点击查看代码Enterpassword:****WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis14Serverversion:8.3.0MySQLCommunitySer......
  • MySQL-09-mysql 存储过程入门介绍
    拓展阅读MySQL00ViewMySQL01Rulermysql日常开发规范MySQL02truncatetable与delete清空表的区别和坑MySQL03Expression1ofORDERBYclauseisnotinSELECTlist,referencescolumnMySQL04EMOJI表情与UTF8MB4的故事MySQL05MySQL入门教程(MySQLtutor......