CREATE TABLE Ad_inf (_id INT, name VARCHAR(20), describe VARCHAR(20));
INSERT INTO Ad_inf VALUES
(1,'test1','d1'), (2,'test2','d2'), (3,'test2','d2'),
(4,'test2','d3'), (5,'test3','d2'), (6,'test4','d4');
SELECT * FROM Ad_inf GROUP BY name, describe;
結果:返回 5 行(去重後的唯一組合)
| _id | name | describe |
|---|---|---|
| 1 | test1 | d1 |
| 2 | test2 | d2 |
| 4 | test2 | d3 |
| 5 | test3 | d2 |
| 6 | test4 | d4 |
注意:_id 取每組第一條記錄的值(非確定性)
ORA-00979: not a GROUP BY expression
原因:SELECT 列表中非聚合列必須出現在 GROUP BY 中
SELECT name, describe FROM Ad_inf GROUP BY name, describe;
SELECT MIN(_id) as first_id, name, describe
FROM Ad_inf GROUP BY name, describe;
SELECT _id, name, describe
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY name, describe ORDER BY _id) as rn
FROM Ad_inf
) t WHERE rn = 1;
sql_mode=ONLY_FULL_GROUP_BY 強制規範