MySQL 5.6:ANY_VALUE 函數的替代方案
使用MySQL 版本5.7 和5.6 時,可能會遇到有關ANY_UE 函數的問題,VAL這僅在5.7 版本中可用。這可能會導致查詢執行期間出現混亂和錯誤。問題出現了:如何在 MySQL 5.6 中獲得類似的功能?
MySQL 5.6 沒有提供與 ANY_VALUE 直接等效的功能。但是,還有其他方法可以實現所需的結果。
停用 ONLY_FULL_GROUP_BY 模式
一個選擇是停用 ONLY_FULL_GROUP_BY SQL 模式。此模式強制 SELECT 語句中引用的所有非聚合資料列也必須出現在 GROUP BY 子句中。透過停用此模式,MySQL 將允許執行這樣的查詢而不會出現錯誤:
SELECT c.id, c.name, ANY_VALUE(i.url) url, ANY_VALUE(i.lat) lat, ANY_VALUE(i.lng) lng FROM countries c, images i WHERE i.country_id = c.id GROUP BY c.id;
SET @mode := @@SESSION.sql_mode; SET SESSION sql_mode = ''; /* your query here */ SET SESSION sql_mode = @mode;
選擇「第一個」值
另一種方法是修改查詢以從圖像表中選擇特定值,例如第一個值。這可以使用 MIN() 函數和子查詢來實現:SELECT c.id, c.name, i.* FROM countries c LEFT JOIN ( SELECT MIN(id) id, country_id FROM images GROUP BY country_id ) first ON c.id = first.country_id LEFT JOIN images i ON first.id = i.id
以上是如何模仿 MySQL 5.6 版本中的 ANY_VALUE 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!