因此,我在数据库中进行了大量测试,每个测试都属于一个类别,每个测试“组”都有一个“序列号”(序列号时间戳) 。每个测试有通过或失败的结果,就像这样:MySQL GROUP BY MAX两列
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_SN
最高只返回行。 所以结果我试着回应该是这样的:
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
任何想法?
像魅力一样工作。谢谢。 – mcmurphy