sql in 的多字段匹配

技术点

in 的用法 类似于:

select * from t where (a,c) in ((a1,c2),(a2,c3));

首先:
in的单字段 匹配

select * from where a in (a1,a2,a3);

该语法中a 的 类型如果是 纯数字的,即使 01,02这种的字符串也是可以执行成功的,并且不需要加单引号.

如果是多字段匹配的时候,那么,如果只有一个匹配项,是没有问题的,也不用加单引号 类似于

select * from t where (a,c) in ((01,01));

但是如果是多个匹配项 则类型必须匹配上,必须得加上单引号,也就是说类似于下面的是查不出结果的

select * from t where (a,c) in ((01,01),(02,02));

必须写成:

select * from t where (a,c) in (('01','01'),('02','02'));

该语法也支持子查询匹配 类似于:

select * from t where (a,c) in (select n.a,n.c from n );

找了半天问题…

搞不懂,一个字段匹配多个的时候不加单引号都没有问题,多个字段匹配一种情况的时候没问题,多个字段匹配多个情况的时候就有问题,看来缺点都有的,某种意义上来说众生是平等的.

语法实战
分享一个拉钩教育的mysql高性能实战视频,感觉还不错,可以mark一下,对数据这块还是可以有不错的提高的.
在这里插入图片描述

### 编写包含多个字段SQL查询语句 当涉及到多个字段的操作时,SQL 提供了多种方式来满足不同的需求。对于查询一个字段同时包含多个特定值的情况,可以采用 `IN` 或者组合使用 `LIKE` 和 `AND` 运算符[^1]。 #### 使用 IN 关键字实现多值匹配 如果目标是在单个字段内查找具有指定集合中的任意一个值的数据记录,则可利用 `IN` 来简化条件表达: ```sql SELECT column_name(s) FROM table_name WHERE column_name IN ('value1', 'value2', ...); ``` 这种方式适用于精确匹配场景下的批量检索操作。 #### 利用 LIKE 结合 AND 实现复杂模式匹配 针对更复杂的部分字符串匹配情形,比如要找出某列既含有 "value1" 又有 "value2" 的行项,可以通过如下形式构建查询逻辑: ```sql SELECT column_name(s) FROM table_name WHERE column_name LIKE '%value1%' AND column_name LIKE '%value2%'; ``` 此方法允许更加灵活地定义搜索模式,但性能上可能不如前者高效。 #### 添加新字段至现有表结构 在考虑向已有数据库表格中引入额外属性时,需注意语法细节以及合理设置默认值和约束条件等要素[^2]: ```sql ALTER TABLE table_name ADD COLUMN new_column datatype COMMENT '描述信息'; ``` 这里展示了如何通过 `ALTER TABLE` 命令安全有效地扩展数据模型而不影响原有业务流程。 #### 执行基于多字段的分组统计分析 为了按照若干维度对数据集进行分类汇总计算,应当运用到 GROUP BY 子句配合聚合函数一起工作[^3]: ```sql SELECT DEPTNO, JOB, COUNT(*), AVG(SALARY) FROM employees GROUP BY DEPTNO, JOB; ``` 上述例子说明了怎样依据部门编号 (`DEPTNO`) 和职位名称 (`JOB`) 对员工薪资水平做平均数与总数目的统计报告生成。 #### 控制结果排序顺序 最后,在获取最终输出之前还可以借助 ORDER BY 排序子句调整展示次序,升序排列(ASC)或是降序排列(DESC),具体取决于实际应用场景的要求[^4]: ```sql SELECT * FROM table_name ORDER BY time ASC; -- 最早时间优先显示 -- OR SELECT * FROM table_name ORDER BY time DESC; -- 最近日期靠前呈现 ``` 这些技巧共同构成了处理涉及多个字段的各种情况的基础工具箱,能够帮助更好地管理和挖掘关系型数据库内的海量信息资源。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱飞的笨鸟

如果帮到了你,是我最大的荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值