[英]SELECT some distinct columns
這是一些測試數據。
+----+------+-------+---------+---------+
| id | type | param | enabled | account |
+----+------+-------+---------+---------+
| 1 | test | a | 1 | null |
| 2 | asdf | b | 1 | null |
| 3 | test | c | 1 | 34 |
| 4 | test | d | 0 | 34 |
| 5 | asdf | e | 1 | null |
+----+------+-------+---------+---------+
我想選擇“類型”和“帳戶”是唯一的最新行。
例如,對於該測試表,我想要結果:
+----+------+-------+---------+---------+
| id | type | param | enabled | account |
+----+------+-------+---------+---------+
| 1 | test | a | 1 | null |
| 4 | test | d | 0 | 34 |
| 5 | asdf | e | 1 | null |
+----+------+-------+---------+---------+
我嘗試了GROUP BY的變體:
SELECT * FROM test GROUP BY type, account
由於某種原因,這給了我:
+----+------+-------+---------+---------+
| id | type | param | enabled | account |
+----+------+-------+---------+---------+
| 1 | test | a | 1 | null |
| 4 | test | d | 1 | 34 | <- note that enabled is taking on an incorrect value.
| 5 | asdf | e | 1 | null |
+----+------+-------+---------+---------+
正確的方法是什么?
假設“最新行”表示id
最大的行,那么有幾種方法。 使用該方法in
是:
SELECT t.*
FROM test t
WHERE t.id IN (SELECT MAX(id) FROM test t2 GROUP BY type, account)
如果查詢為您提供正確的ID,則應嘗試將其放入子查詢中:
SELECT * FROM test WHERE id IN (SELECT id FROM test GROUP BY type, account)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.