簡單問題:什麼是從自定義數據透視表檢索字符串的正確方法。有沒有比MAX(CASE WHEN _ad.key = 'first_name' THEN _ad.value ELSE '' END) AS first_name
更好的方法mysql pivot檢索字符串
我的表工作正常,我的問題是如何檢索單個字符串,我發現每個問題都是問如何聚合行以找到一堆行的總和。我的情況有更好的解決方案嗎?由於只有一個返回值,它將始終是最大值。
dev.mysql.com:「MAX()可能需要一個字符串參數;在這種情況下,它會返回最大字符串值。」
這是我的查詢的最小化版本。
SELECT
_a.id_account,
MAX(CASE WHEN _ad.`key` = 'first_name' THEN _ad.`value` ELSE '' END) AS first_name,
MAX(CASE WHEN _ad.`key` = 'last_name' THEN _ad.`value` ELSE '' END) AS last_name
FROM
`account` _a
LEFT JOIN account_data _ad USING(id_account)
GROUP BY
_a.id_account;
|----------------------------------------
|account
|----------------------------------------
|id_account |
|1 |
|2 |
|----------------------------------------
|----------------------------------------
|account_data
|----------------------------------------
|id_account |key |value
|1 |first_name |OneFirst
|1 |last_name |OneLast
|2 |first_name |TwoFirst
|----------------------------------------
|----------------------------------------
|mypivot
|----------------------------------------
|id_account |first_name |last_name
|1 |OneFirst |OneLast
|2 |TwoFirst |
|----------------------------------------
一兩件事,可能是有益的是,如果你有很多的關鍵值,你可以使用動態支點,讓MySQL的建立所有那些'MAX(CASE WHEN..'爲你,就像http://stackoverflow.com/a/28284999/1745672 – Mihai
@Mhaihai感謝您的參考它可能會有所幫助,對於這個查詢,我試圖避免子查詢 – Bradmage