データベース内で多数のテストが行われ、各テストはカテゴリに属し、テストの各「グループ」には「シリアル番号」(ソートのタイムスタンプ)があります。各テストは合格を持っているかそこらのように、結果を失敗:TEST_SN
が最も高いカテゴリごとに行だけを返すようにクエリを作るしようとしているMySQL GROUP BY MAXの2つの列
TEST Table
TEST_ID TEST_NAME TEST_CAT TEST_SN RESULT
1 test_a Basic 112233 Pass
2 test_b Basic 112233 Pass
3 test_c Basic 112233 Pass
4 test_d Basic 112233 Fail
5 test_e Basic 112233 Pass
6 test_a Basic 223344 Fail
7 test_b Basic 223344 Pass
8 test_c Basic 223344 Pass
9 test_d Basic 223344 Fail
10 test_w Advacned 112233 Fail
11 test_x Advacned 112233 Pass
12 test_y Advacned 112233 Pass
13 test_z Advacned 112233 Pass
イム。 だから結果イムは、次のようになります返すようにしよう:
TEST_ID TEST_NAME TEST_CAT TEST_SN RESULT
6 test_a Basic 223344 Fail
7 test_b Basic 223344 Pass
8 test_c Basic 223344 Pass
9 test_d Basic 223344 Fail
10 test_w Advacned 112233 Fail
11 test_x Advacned 112233 Pass
12 test_y Advacned 112233 Pass
13 test_z Advacned 112233 Pass
ありますのでTEST_SN
の「112233」と「223344」「基本」のために、私は 以前からすべてのテストを無視したい(小さいです) TEST_SN
(1,2,3,4,5行)。 「112233」はAdvacnedの唯一のTEST_SN
なので、私は のすべての行(10,11,12、および13)を保持します。
私はこのクエリと近づくことができます。
SELECT
t.test_id,
t.test_name,
t.test_cat,
MAX(t.test_sn),
t.result
FROM
car_test t
GROUP BY
t.test_name, t.test_cat
しかし、相続人、私は何を得る:
TEST_ID TEST_NAME TEST_CAT TEST_SN RESULT
1 test_a Basic 223344 Pass
2 test_b Basic 223344 Pass
3 test_c Basic 223344 Pass
4 test_d Basic 223344 Fail
5 test_e Basic 112233 Fail
10 test_w Advanced 112233 Fail
11 test_x Advanced 112233 Pass
12 test_y Advanced 112233 Pass
13 test_z Advanced 112233 Pass
行5をまだ存在しています。私はしたいSELECT
行だけのMAX
TEST_SN
それぞれの値TEST_CAT
すべてのアイデア?
魅力的です。ありがとう。 – mcmurphy