[英]How to show unique row with corresponding other column max value
我正在嘗試通過對其他列進行分組來獲取最大列值。 我快到了,但停留在最后一點。 這是我的代碼
表:
id . sys_id . renewal
1 . aaad00101 . 0
2 . aaad00101 . 1
3 . aaad00104 . 0
4 . aaad00102 . 0
5 . aaad00101 . 2
6 . aaad00103 . 0
SQL查詢:
"SELECT * FROM $company WHERE renewal IN (SELECT DISTINCT
MAX(renewal)FROM $company GROUP BY sys_id) ORDER BY sys_id"
結果:
aaad00101-0
aaad00101-2
aaad00102-0
aaad00103-0
aaad00404-0
我的代碼顯示的是最大值和最小值,如前兩個結果。 但是我想如果顯示最大值,則結果中不應顯示最小值。
讓我知道我在這里想念的東西。 謝謝
修復:
SQL查詢:
"SELECT * FROM $company WHERE id IN (SELECT DISTINCT MAX(id)FROM
$company GROUP BY sys_id) ORDER BY sys_id";
我是否要保留表格中當前包含的所有行,並另外顯示一列,以顯示每個sys_id的最大續訂值?
這是在窗口函數中經常執行的操作,但是由於MySQL當前不具備此功能,因此您可以通過附加聯接來解決它。
SELECT a。*,b.last_renewal FROM company as a JOIN(SELECT sys_id,MAX(renewal)AS last_renewal FROM company GROUP BY sys_id)AS b USING(sys_id);
還是您正在尋找最新出現的續訂值,我認為這是id列的最大值?
如果是這樣,您可以將所有續訂值連接到一個列表中,並按ID對該列表進行排序,然后可以取出該列表中的最后一個值。
SELECT sys_id,SUBSTRING_INDEX(GROUP_CONCAT(renewal ORDER BY id),',',-1)AS last_renewal,MAX(id)AS last_occurance from公司GROUP BY sys_id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.