![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQL查询
JavaGirl_亚兰
hello程序媛
展开
-
SQL查询结果按照指定内容排序
SQL查询结果按照指定内容排序原创 2022-09-13 15:23:23 · 299 阅读 · 0 评论 -
sql多表关联更新字段
2、Oracle 多表更新方法:语法:update test1 set (test1.name,test1.age)=(select test2.name,test2.age from test2 where test2.id=test1.id)3、MySql多表更新方法:update test1,test2 set test1.name=test2.name,test1.age=test2.agewhere test1.id=test2.id4、通用方法update.原创 2022-03-08 10:37:15 · 1830 阅读 · 0 评论 -
sql 进行父子排序
原创 2021-08-19 10:11:06 · 693 阅读 · 0 评论 -
mysql sum函数配合 case when distinct 去重复求和
SELECT sum(DISTINCT case when t1.id then t1.amount else 0 end ) as t1sumAmount from table1 t1 left join table2 t2 on t1.id = t2.t1_id如果t1对应多个t2,会出现t1的数量重复相加的情况,用上面的方式可去除重复原创 2021-01-28 08:51:45 · 13285 阅读 · 13 评论 -
MySQL中concat()、concat_ws()以及group_concat()的使用
一、concat()函数1、功能:将多个字符串连接成一个字符串。2、语法:concat(str1, str2,...)返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。3、举例:例1:select concat (id, name, score) as info from tt2;中间有一行为null是因为tt2表中有一行的score值为null。例2:在例1的结果中三个字段id,name,score的组合没有分隔符,我们可以加一个逗号作为分隔转载 2020-12-11 18:14:51 · 190 阅读 · 0 评论 -
mysql order by按照汉字拼音进行排序
直接对汉字对应的字段使用order by,查询的结果并不按照所预期的按照汉字对应拼音进行排列出现这个问题的原因是因为MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。解决方法:修改查询语句:在查询语句的order by部分使用 CONVERT函数。select * from student uorder by CONVERT(u.name USING GBK) asc;...原创 2020-05-19 16:36:12 · 1186 阅读 · 0 评论 -
group by 多个字段
select * from test1; 结果如下图:第二次查询 按照 b列来分组 代码如下select count(a),b from test1 group by b;第三次 按照 c列来分组 代码如下select count(a),c from test1 group by c;第四次 按照 b c两个条件来分组select count(a),b,c from test1 group by b,c;可以看出 group by 两...原创 2020-05-18 17:15:47 · 1331 阅读 · 1 评论 -
一张表的多个字段关联另外一张的同一个字段(获取不同操作人名称)
请假需要层层审批,每次审核存储当前审批人id,需要关联查出对应的名称方式一:(复杂且性能不佳)ELECTabsence.id, ( SELECT name FROM users WHERE absence.first_user_id= users.id ) AS firstName, ( SELECT name原创 2020-05-15 11:56:09 · 3613 阅读 · 0 评论 -
group by 和 order by 一起使用问题处理
group by 和 order by 一起使用时,会先使用group by 分组,并取出分组后的第一条数据,所以后面的order by 排序时根据取出来的第一条数据来排序的,但是第一条数据不一定是分组里面的最大数据。解决方案:可以先排序,再分组,再排序:使用子查询。SELECT r.id, r.uid, r.age , r.datatimeFROM (SELECT...原创 2020-04-30 16:12:30 · 41824 阅读 · 17 评论 -
SQL执行顺序
SQL执行顺序: (1)from (2) join (3) on (4) where (5)group by (6) avg,sum.... (组函数) (7)having (8) select (9) distinct (10) order by ...原创 2020-04-30 15:58:11 · 184 阅读 · 0 评论 -
group by与having的用法
GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表。GROUP BY必须得配合聚合函数来用,分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)等。常用聚合函数count()计数 sum()求和 avg()平均数 max()最...转载 2020-04-30 15:46:02 · 13701 阅读 · 1 评论 -
Mysql数据库IF、IFNULL的使用
IF(expr1,expr2,expr3)如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL), 则 IF() 的返回值为 expr2;否则返回值则为 expr3select if(size=1,"大","小") as size from apple where id = '111'IFNULL(expr1,ex...原创 2020-04-28 14:45:57 · 323 阅读 · 0 评论 -
SQL查询--列出受雇日期早于直接上级的所有员工
请先查看解决问题所需的数据表结构:点击跳转问题:列出受雇日期早于直接上级的所有员工答案:解法一:select a.ename from emp a where a.hiredate解法二:select t.ename from emp t where t.mgr is not null and not exists(select null fro原创 2017-04-25 16:29:20 · 20967 阅读 · 4 评论 -
SQL查询--列出所有员工的姓名及其直接上级的姓名
请先查看解决问题所需的数据表结构:点击跳转问题:列出所有员工的姓名及其直接上级的姓名答案:解法一:select a.ename,(select ename from emp b where b.empno=a.mgr) as boss_name from emp a;解法二:select e.ename,m.ename boss_name from原创 2017-04-25 16:13:58 · 56909 阅读 · 3 评论 -
SQL查询--列出薪资比“SMITH”多的所有员工
请先查看解决问题所需的数据表结构:点击跳转问题:列出薪资比“SMITH”多的所有员工答案:解法一:select * from emp where sal>(select sal from emp where ename='SMITH');解法二:select * from emp A where exists(select null from emp原创 2017-04-25 15:56:14 · 17855 阅读 · 0 评论 -
SQL查询--列出至少有一个员工的部门
请先查看解决问题所需的数据表结构:点击跳转问题:列出至少有一个员工的部门答案:解法一:select dname from dept where deptno in(select deptno from emp);解法二:select dname from dept where deptno in (select deptno from emp gro原创 2017-04-25 15:45:17 · 40008 阅读 · 1 评论 -
SQL查询--查询所需表结构、数据
表结构:原创 2017-04-25 15:43:53 · 11008 阅读 · 0 评论