MySQL条件查询

真实的业务场景中,数量会非常大,有些甚至会有几百万、几千万条数据,如果不带上查询条件,一次性把全部数据查出来是不太现实的。

SELECT 查询没有查询条件。比如只返回姓名为xx的人, 年龄为xx的人等条件

要知道,真实的业务场景中,数量会非常大,有些甚至会有几百万、几千万条数据,如果不带上查询条件,一次性把全部数据查出来是不太现实的。

所以,我们通常要求在执行 SELECT 查询时,都要带上查询条件。那这一节,我们就来学习一些简单的 WHERE 条件查询。

查询操作符

操作符 示例 描述
= user_id = 1 等于
!= 或 <> user_id != 1 或 user_id <> 1 不等于
> user_id > 1 大于
< user_id < 1 小于
>= user_id >= 1 大于等于
<= user_id <= 1 小于等于

示例: 查找id大于1000的文章

SELECT title, user_id, create_time FROM article WHERE user_id > 1000;

区间查询

利用一个 >= 和一个 <=,配合 AND 关键字,就可以实现区间查询

SELECT 字段名 FROM  WHERE user_id >= 1000 AND user_id <= 2000;

查询上下界id为1000 到 2000 的文章

其实就是规定上下界 所以可以用 BETWEEN 代替

SELECT title, user_id, create_time FROM article WHERE user_id BETWEEN 1000 AND 2000;

取反也可以, 加上 NOT 就行

SELECT title, user_id, create_time FROM article WHERE user_id NOT BETWEEN 1000 AND 2000;

感觉比Python简单

枚举查询

当区间为1, 其实就是枚举, 这就不需要指定上下界了 我们可以直接指定数值 用 IN

查询 user_id 是 1、2、3 的文章

SELECT title, user_id, create_time FROM article WHERE user_id IN (1, 2, 3); 

当然可以取反. 此略

逻辑操作符

除了数据操作符外还可以进行逻辑判断

其实上文的 AND 就是一个

AND 操作符用于组合多个查询条件,只有当所有的条件都满足时,才会返回结果

SELECT title, user_id, create_time FROM article WHERE user_id != 1 AND title = 'something';

OR与其类似

可以使用() 指定优先级

SELECT title, user_id, create_time FROM article WHERE user_id != 1 AND (title = '聊聊分库分表' OR short_title != '');

in

in查询相当于多个or条件的叠加,这个比较好理解,比如下面的查询:

select * from user where user_id in (1, 2, 3);

exists

select * from user where exists (select * from user where user_id = 0);

这两个都是条件嵌套