2016-04-28 44 views
0
SELECT max(date) as lastdt,name,col1 FROM `consumption` group by name 

在上面的查詢中,取自同一行的值爲col1,max(date)nameSQL - 列是否總是相應的?

+0

沒有,col1'的'的價值是不確定的。 –

+0

感謝您的快速回復。 我想'col1'值與其他兩個值相對應。我怎樣才能做到這一點? – Stacks13

+0

按名稱和co1組合 –

回答

1

MySQL允許非聚合列出現在查詢的SELECT子句中。但是這些列的值是不確定的。

如果你想獲得對應於具有最大date值的記錄的col1值,那麼你將不得不做的額外加入:

SELECT t1.* 
FROM `consumption` AS t1 
JOIN (SELECT max(`date`) as lastdt, name 
     FROM `consumption` 
     group by name) AS t2 
ON t1.name = t2.name AND t1.`date` = t2.lastdt 
+0

工作正常。謝謝。 – Stacks13

0

簡答:他們可能會或可能不會。查看MySQL文檔how mysql handles the group by clause

[MySQL的]可以自由選擇從每個組的值,所以除非它們是 相同,選擇的價值是不確定的,這可能不是你想要的 。

對於長時間的答案,你需要閱讀我鏈接上面的整個頁面,這將給你一個完整的圖片。總結一下:在某些配置設置下,mysql在放寬模式下解釋group by子句,允許選擇列表中不在group by子句中的字段,也不是任何分組函數的主題(如sum( ))。在這種情況下,mysql可以自由地爲給定組中的這個字段選擇任何值。

相關問題