簡體   English   中英

選擇一些不同的列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM