SQL常用技巧 持续更新中

ORDER BY FIELD() 自定义排序逻辑

强制排序,自定义规则

SELECT *  FROM t_student  ORDER BY FIELD(ID,3,2,5,16,7) DESC

alt text

EXISTS

判断多表数据行是否存在,排除不存在行数据
alt text
从 student 表中筛选出那些存在于子查询结果中的行,也就是存在与之 name 不相等的对应行在 t_student 表中的行

GROUP CONCAT(expr) 组连接函数

按照指定规则对数据进行拼接,并可指定排序逻辑,以及连接字符串,默认为英文逗号连接。

select cname as '班级名称',GROUP_CONCAT(名字 ORDER BY cname SEPARATOR '--') as '班级人数明细' from (
 SELECT   st.SNAME as '名字',
 cl.cname  FROM student as st  
 LEFT JOIN  class as cl    on  st.c_id=cl.cid 
 LEFT JOIN score  as sc on sc.c_id=cl.cid and sc.s_id=st.sid
 ) d  GROUP BY cname 

alt text