MySQL是一款常用的關系型數據庫管理系統,常常用于網站后臺數據存儲與處理。在使用MySQL時,我們會遇到一些特定的需求,比如需要查詢不同分組中每組最大值相同的數據。這篇文章就來介紹如何在MySQL中完成這個任務。
首先,我們需要創建一個測試用的數據表,并插入一些數據。可以使用以下SQL語句:
CREATE TABLE test_table(id INT, name VARCHAR(20), score INT); INSERT INTO test_table (id, name, score) VALUES (1, '小紅', 80); INSERT INTO test_table (id, name, score) VALUES (2, '小明', 90); INSERT INTO test_table (id, name, score) VALUES (3, '小寶', 80); INSERT INTO test_table (id, name, score) VALUES (4, '小勇', 75); INSERT INTO test_table (id, name, score) VALUES (5, '小君', 85); INSERT INTO test_table (id, name, score) VALUES (6, '小龍', 90); INSERT INTO test_table (id, name, score) VALUES (7, '小花', 70); INSERT INTO test_table (id, name, score) VALUES (8, '小翠', 80); INSERT INTO test_table (id, name, score) VALUES (9, '小燕', 85);
上述SQL語句創建了一個名為test_table的數據表,并插入了九條記錄,包括id、name和score三個字段。
現在,我們需要查詢不同分組中每組最大值相同的數據,也就是每個分數段中的最高分。可以使用以下SQL語句:
SELECT name, score FROM test_table WHERE (score, id) IN (SELECT MAX(score), MIN(id) FROM test_table GROUP BY score);
該操作使用子查詢,先通過分組操作獲取每個分數組的最高分和最小id值,然后通過IN關鍵字匹配原表中相應記錄的score和id值。
執行以上SQL語句后,我們可以得到如下結果:
+------+-------+ | name | score | +------+-------+ | 小明 | 90 | | 小龍 | 90 | | 小君 | 85 | | 小燕 | 85 | | 小紅 | 80 | | 小寶 | 80 | | 小翠 | 80 | | 小勇 | 75 | | 小花 | 70 | +------+-------+
結果中包含了每個分數段中的最高分,查詢操作成功完成。