强大的多列 IN 查询语句,及数据库支持情况。

SQL 中最强大的也是最复杂的就是查询部分。在需要查询多条记录时我们一般会采用 in 关键字来指定要查询的条件:

SELECT * FROM t_user WHERE uid IN (1,2,3,4,5,6,7,8,9);

但如果对应的数据需要两个或更多字段才能确定,可能会写出以下的 SQL 语句:

SELECT * FROM t_user WHERE
(first_name = 'first_name_1' AND last_name = 'last_name_1') OR
(first_name = 'first_name_2' AND last_name = 'last_name_2') OR
(first_name = 'first_name_3' AND last_name = 'last_name_3') OR
(first_name = 'first_name_4' AND last_name = 'last_name_4') OR
(first_name = 'first_name_5' AND last_name = 'last_name_5') OR
(first_name = 'first_name_6' AND last_name = 'last_name_6') OR
(first_name = 'first_name_7' AND last_name = 'last_name_7');

以上代码当然能用,但拼接出来的语句过于复杂。有一个方法可以改善这个问题,就是使用多列 IN 的语法。

MySQL 中的多列 IN 查询

MySQL 是支持多列 IN 查询的。以上的 SQL 可以改写为:

SELECT * FROM t_user WHERE (first_name,last_name) IN (('first_name_1','last_name_1'),('first_name_2','last_name_2'),('first_name_3','last_name_3'),('first_name_4','last_name_4'),('first_name_5','last_name_5'),('first_name_6','last_name_6'),('first_name_7','last_name_7')
);

SQLite 中的多列 IN 查询

SQLite 也支持多列 IN 查询,只是语法上和 MySQL 有所不同,需要多加一个 VALUES 关键字:

SELECT * FROM t_user WHERE (first_name,last_name) IN ( VALUES('first_name_1','last_name_1'),('first_name_2','last_name_2'),('first_name_3','last_name_3'),('first_name_4','last_name_4'),('first_name_5','last_name_5'),('first_name_6','last_name_6'),('first_name_7','last_name_7')
);

PostgreSQL 中的多列 IN 查询

PostgreSQL 也支持队列 IN 查询,在官方文档中,这种形式被称为“行构造器”,参见:PostgreSQL 子查询表达式 。其多列查询的语法和 MySQL 相同:

SELECT * FROM t_user WHERE (first_name,last_name) IN ( ('first_name_1','last_name_1'),('first_name_2','last_name_2'),('first_name_3','last_name_3'),('first_name_4','last_name_4'),('first_name_5','last_name_5'),('first_name_6','last_name_6'),('first_name_7','last_name_7')
);

其他数据库对多列 IN 查询的支持情况

多列 IN 并非受所有数据库支持。根据网上的资料,Oracel 是支持该操作的,但 SQL Server 不支持。其他数据库的支持情况因笔者没有测试环境,并未进行测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS实验教程——实验四十二:ArcGIS密度分析(核密度、点密度、线密度)

文章目录 一、密度分析原理二、点密度分析三、线密度分析四、核密度分析一、密度分析原理 密度分析是指根据输入的要素数据集计算整个区域的数据聚集状况,从而产生一个联系的密度表面。通过密度计算,将每个采样点的值散步到整个研究区域,并获得输出栅格中每个像元的密度值。…

Log4Net的WebApplication使用

一、Log4Net的WebApplication使用 1、首先使用nuget 添加log4Net 到WebApplication项目中 log4j每个符号的具体含义:%d %5p %c{1}:%L - %m%n log4j.properties# %m 输出代码中指定的消息# %p 输出优先级,即DEBUG,INFO,WARN&…

C语言试题191之实现strcat函数功能

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 实现st…

eclipse启动tomcat无法访问

症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误。同时其他项目页面也不能访问。 关闭eclipse里面的tomcat,在tomcat安装目录下双击startup.bat手动启动tomcat服务器。访问htt:…

[转]IntelliJ IDEA 2020.1 正式发布,15 项重大特性、官方支持中文了!

头图&作者 | YourBatman,CSDN博客专家 责编 | 唐小引 出品 | CSDN(ID:CSDNnews) 前言 千呼万唤始出来!自从官方在 2020-01-20 发布了其 2020 年的 Roadmap 后,我便持续关注着、期待着 JetBrains Intell…

【ArcGIS遇上Python】ArcGIS批量为多个矢量图层添加一个或多个字段(Add Field)案例实现

多个人在利用ArcGIS做数字化之后,需要批量为多个图层添加一个或者多个相同的字段,挨个手动添加字段显然不可取。ArcGIS Python提供了快速高效的批量添加字段的解决方案。本文以土地利用数据(Landuse1和Landuse2)为例,采用简单的Python代码实现了文中两个矢量图层批量添加字…

可下载!Vue3+.NET6实战系列:通用管理后台

.NET Framework停更3年,4月份还又停止了3个版本支持,居然还有人没怎么接触.NET跨平台!真的该好好学下.NET6了,已经是不得不学了!好好看下这套《Vue3.NET6前后端分离电商实战》免费教程,完整的源码视频课件全…

C语言试题192之实现strchr函数功能

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 实现st…

简单团队-爬取豆瓣电影TOP250-需求分析

1.实现登录界面 2.搜集相关电影网址 3..按照一定条件爬取电影,实现相关代码部分 项目步骤: 分析豆瓣电影TOP250的url规则, 编写模块获取相关url分析html中有关"排名,分数,名字,简介,导演,演员,前10条影评信息,链接信息"的标签编写将"搜集…

一个想法:成立草根技术联盟对开发人员进行技术定级解决企业员工招聘难问题!...

背景&#xff1a; 吃饭前&#xff0c;想起了<甄嬛传>中皇弟叹息的一句&#xff1a;千军易得&#xff0c;良将难寻&#xff01; 又逢CTO群里有友人让我帮忙评估其公司的项目及技术&#xff0c;一番review code&#xff0c;估计要写那代码的人要落岗了~ 不由想起&#xff0…

对软件工程这门课的收获与总结

转眼间八周已经过去&#xff0c;《现代软件工程》这门课程也在这周结束了。在宋老师的教导下&#xff0c;以及在个人项目以及团队项目的参与中我确实收获了许多。我觉得我有必要将这八周所获得的经验也好&#xff0c;教训也好都记录下来&#xff0c;相信这也会对未来的自己有所…

[转]C++二进制完成加减乘除

首先介绍计算机的二进制码 二进制常用的有原码&#xff0c;反码和补码&#xff0c;他们都是由最左边的一个符号位和右边的数值位构成。在计算机中为了更低成本的计算&#xff0c;数据都是用补码来存储和运算的。 原码 最高位表示符号位&#xff08;0代表正数&#xff0c;1代…

WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换案例教程(附转换工具下载)

在做基于百度地图、高德地图等电子地图做为地图服务的二次开发时,通常需要将具有WGS84等坐标的矢量数据(如行政区划、地名、河流、道路等GIS地理空间数据)添加到地图上面,然而,在线地图大多使用的是火星坐标系,需要事先将矢量数据转为火星坐标系。本文以案例的形式,讲述…

.NET 6 AssemblyLoadContext DLL 库 热插拔逻辑实现

曾经也实现过.Net Framework 基于AppDomain 的 dll库热插拔&#xff0c;经历了版本的迭代&#xff0c;.Net Core 不支持 AppDomain&#xff0c;之前也搞过.Net Core 3.1 版本的&#xff0c;现在搞一下子.NET 6.0的。热插拔运用的场景主要运用到宿主与插件这个场景或者动态任务的…

C语言试题193之实现strcmp函数功能

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 实现st…

浅谈Java多线程同步机制之同步块(方法)——synchronized

在多线程访问的时候&#xff0c;同一时刻只能有一个线程能够用 synchronized 修饰的方法或者代码块&#xff0c;解决了资源共享。下面代码示意三个窗口购5张火车票&#xff1a; 1 package com.jikexueyuan.thread;2 /*3 * 未使用synchronized&#xff0c;存在并发4 */5 class…

[转]Webpack5(从入门到精通)

这里写目录标题 1、webpack 初体验 全局安装webpack2.打包样式资源 创建webpack.config.js文件&#xff08;配置文件&#xff09;3.打包html资源 webpack.config.js文件&#xff08;配置文件&#xff09;4.打包图片资源 webpack.config.js文件&#xff08;配置文件&#xff09;…

mybatis由浅入深day01_5mybatis开发dao的方法(5.1SqlSession使用范围_5.2原始dao开发方法)...

5 mybatis开发dao的方法 5.1 SqlSession使用范围 5.1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory 将SqlSessionFactoryBuilder当成一个工具类使用即可&#xff0c;不需要使用单例管理SqlSessionFactoryBuilder。 在需要创建SqlSes…

做⼀个⾼德地图的 iOS / Android MAUI 控件(上)

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;10分钟)Microsoft Build 2022 ⼤会上正式发布了 .NET MAUI , 对于 .NET 开发者可以⽤ C# 完成跨平台的前端应⽤开发。对⽐起 MAUI 的前身 Xamarin , MAUI 除了可以⽤传统的原⽣开发模式外&#xff0c;还⽀持了 Blazor…

易康eCognition Developer 9.01安装教程(附eCognition下载地址及中文教程)

eCognition是由德国Definiens Imaging公司2009年推出的智能化影像分析软件,2010年被美国Trimble公司收购。eCognition是目前所有商用遥感软件中第一个基于目标信息的遥感信息提取软件,它采用决策专家系统支持的模糊分类算法,突破了传统商业遥感软件单纯基于光谱信息进行影像…