[討論] SQL子查詢

看板Database作者 (學習中)時間7年前 (2017/04/27 00:28), 7年前編輯推噓2(208)
留言10則, 3人參與, 最新討論串1/1
剛才板友怎麼還沒問完就刪掉了 XD 可能是自己試出來了吧~ 總之試了一下就PO上來當練習&參考 --create table create table score( pname varchar(10), subject varchar(10), subscore integer, id varchar(10)) ; --insert data insert into score (pname, subject, subscore, id) values ('張三','數學' , 90 , 1) , ('張三','語文' , 50 , 2) , ('張三','地裡' , 40 , 3) , ('李四','語文' , 55 , 4) , ('李四','政治' , 45 , 5) , ('王五','政治' , 30 , 6) , ('造六','地裡' , 90 , 7) , ('造六','國文' , 85 , 8) , ('造六','歷史' , 100 , 9) ; --select data: max subscore group by pname select b.pname, subject, subscore, id from score b join (select pname, max(subscore) mx from score group by pname ) a on a.pname = b.pname and a.mx = b.subscore OUTPUT pname subject subscore id 造六 歷史 100 9 張三 數學 90 1 李四 語文 55 4 王五 政治 30 6 4/29更新 另一種寫法 ROW_NUMBER語法 不過沒有比較簡單 XD SELECT pname, subject, subscore, id from ( SELECT pname, subject, subscore, id , ROW_NUMBER() OVER ( partition by pname ORDER BY pname,subscore desc) N from score ) A where A.N=1 OUTPUT pname subject subscore id 王五 政治 30 6 李四 語文 55 4 張三 數學 90 1 造六 歷史 100 9 -- 不推▃▃▃▃▃▃▃▃推嗎 \ \ 不推嗎不推嗎 不推 在這邊推個文, / \ 不推嗎不推嗎 不推 就能實現願望喔! / \ 推嗎不推嗎 不推嗎不推嗎不推嗎◥█│ │ 推嗎不推嗎 不推嗎不推嗎不推嗎不\ │ 嗎不推嗎 不推嗎不推嗎不推嗎不推嗎 \ ︶︶ 好人-改 / 嘿~嘿~嘿~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.147.29.46 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1493224081.A.682.html

04/27 04:22, , 1F
對,我自己試出來了XD,原來where跟in後面的條件是可以
04/27 04:22, 1F

04/27 04:23, , 2F
成對的,這是我最後的語法,select * from score where
04/27 04:23, 2F

04/27 04:23, , 3F
(pname,subscore) in (select pname,max(subscore)
04/27 04:23, 3F

04/27 04:24, , 4F
from score group by pname);
04/27 04:24, 4F

04/27 04:25, , 5F
不過我還沒學到join關鍵字,我會好好研究一下,感謝!
04/27 04:25, 5F

04/28 15:22, , 6F
沒看到原來的問題 如果是mysql只要這樣就好了
04/28 15:22, 6F

04/28 15:23, , 7F
select pname,subject,max(subscore) as subscore,id
04/28 15:23, 7F

04/28 15:23, , 8F
from score group by pname order by subscore desc;
04/28 15:23, 8F
※ 編輯: criky (27.147.29.46), 04/29/2017 10:22:53

04/29 11:45, , 9F
題目有說不得使用 order by
04/29 11:45, 9F

04/29 15:18, , 10F
喔,那後來補充的就不行了~~
04/29 15:18, 10F
文章代碼(AID): #1P0CgHQ2 (Database)