# SQL 解題練習
###### tags: `SQL`
Copyright 2021, [月下麒麟](https://hackmd.io/@YMont/note-catalog)
---
## Question
3個學生a,b,c,每個人有4次測驗成績都不一樣0~100分,總共12筆記錄。
使用1個SQL查詢,取出每位學生最好的2筆成績。
## Source Code
```sql=
SELECT *
FROM
( SELECT * FROM member
WHERE name='Edgar'
ORDER BY grade
DESC LIMIT 2
)
UNION
SELECT *
FROM
(
SELECT * FROM member
WHERE name='John'
ORDER BY grade
DESC LIMIT 2
)
UNION
SELECT *
FROM
(
SELECT * FROM member
WHERE name='Mary'
ORDER BY grade
DESC LIMIT 2
);
```
(如上為SQLite版本)
因在SQLite上必須要利用多個select來搭配union,否則語法會錯誤。
reference:[Combine two statements with LIMITS using UNION](https://stackoverflow.com/questions/10812910/combine-two-statements-with-limits-using-union)
```sql=
( SELECT * FROM member
WHERE name='Edgar'
ORDER BY grade
DESC LIMIT 2)
UNION
( SELECT * FROM member
WHERE name='John'
ORDER BY grade
DESC LIMIT 2)
UNION
( SELECT * FROM member
WHERE name='Mary'
ORDER BY grade
DESC LIMIT 2);
```
(如上為MySQL版本)