將 Postgresql 的 DISTINCT ON 查詢轉換為 MySQL
從 Postgresql 移轉到 MySQL 通常需要調整現有查詢。其中一個查詢類型是 DISTINCT ON 查詢,它在考慮多個列的同時檢索唯一行。雖然 MySQL 缺乏完全相同的功能,但有一些方法可以實現類似的功能。
Postgresql 的 SELECT DISTINCT ON
Postgresql 的 SELECT DISTINCT ON 查詢根據指定的欄位擷取不同的行。例如:
此查詢對於 (col1, col2, col3) 的每個唯一組合僅傳回一行,保留第一個遇到的 col4 和 col5 值。
MySQL 的Group By 擴充
MySQL 擴充了 GROUP BY 子句以允許選擇非聚合列。但是,為每個群組返回的特定行是不確定的。這意味著像這樣的查詢:
在行選擇方面相當於 Postgresql 的 DISTINCT ON 查詢。但是,傳回的行是不可預測的。
適合 MySQL
為了確保可預測性,需要採取有序的方法。儘管使用具有 ORDER BY 的子查詢很有吸引力,但 MySQL 的優化器可能不會尊重它。
更可靠的方法是:
此查詢查找第一個遇到的滿足DISTINCT ON 的行Postgresql 中的條件透過使用相關子查詢來檢索每個群組的最小col4 值。
結論
雖然 Postgresql 的 DISTINCT ON 查詢在 MySQL 中沒有直接對應項,有解決方法。方法的選擇取決於特定的查詢和所需的複雜程度。
以上是如何在MySQL中實現Postgresql的DISTINCT ON功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!