Mysql實戰中常用sql的分析
阿新 • • 發佈:2019-07-01
1.查詢具體的最高、最低、平均值、大於平均值、小於平均值
-- 查詢Score表中的最高分的學生學號和課程號。
SELECT * FROM students s, scores c WHERE s.sno = c.sno AND c.degree =
(SELECT MAX(degree) FROM scores);
- 套路:1.求出最大值;2.學生表和成績表連表或者子查詢
2.查詢每個分類中最大、最小的數量
-- 查詢每個職位的最高工資以及人數 SELECT job.jname, res.jid, res.salary, COUNT(1) FROM (SELECT * FROM emp, (SELECT MAX(salary) as max, job_id as jid FROM emp GROUP BY jid) as max_table WHERE emp.job_id = max_table.jid AND emp.salary = max_table.max) as res, job WHERE res.jid = job.id GROUP BY jid;
- 套路:1.分組求出每個職位的最高工資;2.和職工表連表查詢出結果集;3.對結果集連表、分組求出人數、職位、工資
3.從表中複製一條資料並插入(主鍵自增)
從表中複製一條資料,並插入
insert into student ( Sname,Sage,Ssex ) select Sname,Sage,Ssex from student where Sid =1;
4.查詢一條資料,以別名展示
-- 查詢出1990年以後出生的學生,並升序排列, 顯示欄位gender,性別為則顯示為'male',女則顯示為'female',非男或女則顯示為'other' SELECT Sname, Sage, Ssex, (CASE Ssex WHEN '男' THEN 'male' WHEN '女' THEN 'female' ELSE 'other' END ) as gender FROM student WHERE SUBSTRING(Sage, 1, 4) > 1990 ORDER BY Sage;
- 套路:使用case...when...
5.查詢存在和不存在的情況
查詢存在" 01 "課程但可能不存在" 02 "課程的情況(不存在時顯示為 null )
select * from
(select * from sc where sc.CId = '01') as t1
left join
(select * from sc where sc.CId = '02') as t2
on t1.SId = t2.SId;
套路:1.使用條件查詢查出存在01課程的情況;2.根據需求使用內連線或者左連線、右連線