簡體   English   中英

如何顯示具有對應的其他列最大值的唯一行

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

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