lambdaquerywrapper查询指定字段_SQL查询语句

续上一期

(9)带or的多条件查询

语法:条件表达式1 or 条件表达式2 […or 条件表达式n]

示例1:我们用or关键字来查询employee表中d_id为1001,或者sex为’男’的记录

select * from employee where d_id=1001 or sex =’男’;

7b28044f9204f63f946fd7834700504c.png

示例2:使用or关键字查询employee中的记录。条件为num取值在{1,2,3}这个集合中,或者age从24~25这个范围,或者或者homeaddr的取值中包含’北京市’。

注:or 和 and 可以一起使用,and要比or先运算。

select * from employee where num in(1,2,3) or age between 24 and 25 or homeaddr like ‘%北京市%’;

afd2de69255ab3f6f5145e17f4195673.png

示例3:下面同时使用or和and查询employee表中的记录。

select * from employee where num in(1,2,3) and age =25 or sex =’女’;

de2c0e8fe33a6f0cc75b48531ba4396f.png

说明:and和or关键字可以连接表达式。这些表达式中可以使用”=”,”>”,”

(10)查询结果不重复

在表中某些字段上没有唯一性约束,这些字段旧可能存在重复的值。我们看一下employee表。

select * from employee;

176ee60a744866a45522b9fea45343b3.png

在查询数据的过程中,d_id中有重复值,我们使用distinct关键字来消除重复值。

语法:select distinct 属性名

注:属性名指要消除重复记录的字段的名词。

示例:我们使用distinct关键字消除表中的重复记录。

select distinct d_id from exployee;

b1998da0c931dbdb43b83061314b7b9e.png

(11)对查询结果排序

一般情况下,查询出来的数据是无序的,我们可以使用order by关键字来排序

语法:order by 属性名 [ASC|DESC]

我们查询employee表,按照age字段进行排序。

先查看一下age的原始结果

76ee1bc22013d392fcfd49f32b1aae17.png

示例:select * from employe order by age;

注:不加ASC或者DESC时,默认按照升序排序。

52cf25f14dcfe172f6b13418e3bf59a6.png

我们使用order by desc 进行降序排序

639bd50c675211a8dc80eac3c4fde2e6.png

mysql中可以指定多个字段进行排序;我们尝试将employee表中的d_id字段和age字段进行排序。排序过程中先按照d_id字段进行排序,遇到d_id字段的值相等时,再把d_id值相等的记录按照age字段进行排序。

1d64a0d71be7b4c7d30acbb7d6af7e6d.png

(12)分组查询

group by可以将查询结果按某个字段或多个字段进行分组。字段中值相等的为一组。

语法:group by 属性名 [having 条件表达式][with rollup]

属性名:指按照该字段的值进行分组;

having条件表达式:用来限制分组后的显示,满足条件的表达式将被显示;

with rollup:关键字将会在所有记录的最后加上一条记录。该记录是上面所有记录的总和。

group by关键字可以和group_concat()函数一起使用。group_concat()函数会把每个分组中

指定字段的值都显示出来。同事,group by关键字通常与集合函数一起使用。集合函数包括count()、sum()、avg()、max()、和min()。其中:

count()用来统计记录的条数;

sum()用来计算字段的值得总和;

avg()用来计算字段的值得平均值;

max()用来查询字段的最大值;

min()用来查询字段的最小值;

1. 单独使用group by关键字来分组

下面按employee表的sex字段进行分组查询,查询结果与分组前结果进行对比。

分组前:select * from employee;

22e7ad9b14bc346da70a166fd68add97.png

分组后:select * from employee group by sex;

0462bdd6cee2c1d8ea68b7a64e87a20d.png

2. group by关键字与group_concat()函数一起使用

group by关键字与group_concat()函数一起使用时,每个分组中指定字段都会显示出来。

下面我们employee表中sex字段进行分组,使用group_concat()函数将每个分组的name字段的值显示出来。

示例:select sex,group_concat(name) from employee group by sex;

69b331d93b8062c4f355ab0e3461e209.png

3. group by关键字与集合函数一起使用

group by关键字与集合函数一起使用时,可以通过集合函数计算分组中的总记录,最大值,最小值等。

我们按employee表的sex字段进行分组查询。sex字段取值相同的为一组,然后使用集合函数进行计算,求出记录数。

select sex,count(sex) from employee group by sex;

6e2e8c663d0d088977647f2c139e1e28.png

注:通常,group by关键字与集合函数一起使用。集合函数包括count()、sum()、max()、min()、avg()。通常先使用group by关键字将记录分组,然后每组都使用集合函数进行计算。

4. group by关键字与having一起使用

“having”关键字,可以限制输出结果

下面按employee表中的sex字段进行分组查询,然后显示记录大于等于3的记录。

select sex,count(sex) from employee group by sex having count(sex)>=3;

c86ef132d927057e15840ab9c4dad47b.png

结果只显示了取值为“男”的记录数。分组中男的记录数是5,刚好满足having count>3的条件。

5. 按多个字段进行分组

示例:employee表按照d_id字段和sex字段进行分组。分组过程中,先按照d_id字段的值进行分组。遇到d_id字段的值相等的情况是,再把d_id值相等的记录按照sex字段分组。

select * from employee group by d_id,sex;

aa43fb5eacf2b6d2d45f1d63edf1acac.png

6. group by关键字与with rollup一起使用

使用with rollup时,将会在所有记录的最后加上一条记录。这条记录是上面所有记录的总和。

我们employee表中的sex字段进行分组查询,使用count()函数计算每组的记录数。

select sex,count(sex) from employee group by sex with rollup;

25f98610630bcb54dd1ceccee691b217.png

示例:按employee表的sex字段进行分组查询。使用group_concat()函数查看每组name字段的值。并加上with rollup。

select sex,group_concat(name) from employee group by sex with rollup;

788c2678378d7f06911165cfbece0ba7.png

(13)用limit限制查询结果的数量

1.不指定初始位置

limit不指定初始位置,记录从第一天开始显示,显示记录条数有关键字limit指定。

语法:limit 记录数

下面我们查询employee表的记录,只显示3条

select * from employee limit 3;

58d2101c648ae9972061b255b087c669.png

2.指定初始位置

语法:limit 初始位置,记录数

初始位置:指参数从那条记录开始显示

记录数:参数表示显示记录的条数。

select * from employee limit 0,2;

148844716750d4697a52b033183e6436.png

注:limit关键字是mysql中特有的。limit关键字可以指定需要显示的记录的初始位置,0表示第一天记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值