簡體   English   中英

找到一列的最大值,然后按同一表中的另一列分組

[英]Find the max value of a column, then group by another column in same table

我有一個與此處解決的問題類似的問題,但是當我嘗試該解決方案時,我認為它失敗了,因為我將事情設置的不同。

我有一個帶有...的文檔表(不幸的是,由於它是舊系統,因此無法編輯該表)

+-------+--------+----------+--------+
| Docid | title  | revision | linkid |
+-------+--------+----------+--------+
| 1     | docone | 1        | 1      |
| 2     | doctwo | 1        | 2      |
| 3     | docone | 2        | 1      |
|4      | docone | 3        | 1      |
+-------+--------+----------+--------+

在列出所有文檔的頁面上,我只想列出每個文檔的最新修訂版。 例如,Doc1在修訂版3上,因此我想要一個,而不是其他2。Doc2僅在修訂版1上,所以請顯示一個。

基於另一篇文章中的問題,我將查詢編寫如下:

$query_docs = "
    SELECT `document`.*, doctype.* 
    FROM `document`   
    INNER JOIN doctype    
        ON `document`.iddoctypes = doctype.iddoctypes
    WHERE `document`.revision = (
        SELECT MAX(`document`.revision) AS revision 
        FROM `document`
    )  
    GROUP BY `document`.linkid   
    ORDER BY `document`.doccreation DESC";

我不得不鏈接到另一個表來獲取文檔類型(只是為了使查詢更困難)。

只是一個瘋狂的猜測:我認為您必須在(select max(...) ...)子查詢中group by title添加group by title

因此,完整的聲明將是這樣的:

$query_docs = "
SELECT `document`.*, doctype.* 
FROM `document`   
INNER JOIN doctype    
    ON `document`.iddoctypes = doctype.iddoctypes
WHERE `document`.revision = (
    SELECT MAX(`document`.revision) AS revision 
    FROM `document`
    --GROUP BY `document`.title
    GROUP BY `document`.linkid
)  
GROUP BY `document`.linkid   
ORDER BY `document`.doccreation DESC";

試試這個,我做了幾個小改動

SELECT document.*, doctype.* 
FROM document   
INNER JOIN doctype    
    ON document.iddoctypes = doctype.iddoctypes
WHERE document.revision = (
    SELECT MAX(d1.revision)
    FROM document d1 
    WHERE document.linkid = d1.linkid
)  
ORDER BY document.doccreation DESC

我想念什么嗎? 這似乎很簡單...

SELECT x.*
  FROM my_table x
  JOIN (SELECT title,MAX(revision) max_revision FROM my_table GROUP BY title) y
    ON y.title = x.title 
   AND y.max_revision = x.revision;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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