[主要編輯,以把事情說清楚]MySql的動態列名
我想寫一個返回動態列名這樣的查詢:
SELECT f2 AS ( SELECT column_name FROM column_names_tbl WHERE column_name = "experience" limit 0,1 ) FROM some_table
,以便將輸出相同的這: SELECT f2 AS experience FROM some_table
[主要編輯,以把事情說清楚]MySql的動態列名
我想寫一個返回動態列名這樣的查詢:
SELECT f2 AS ( SELECT column_name FROM column_names_tbl WHERE column_name = "experience" limit 0,1 ) FROM some_table
,以便將輸出相同的這: SELECT f2 AS experience FROM some_table
這是沒有正確的SQL語法,即使因爲兩個查詢(選定的字段和它的別名)都是子查詢並且彼此不相關。因此,即使語法正確,mysql也不可能區分要連接什麼名稱的名稱,即使語法正確...
您已經使用了一個或多或少規範化的關係表,因此我建議採用以下解決方案:
SELECT ps.keyname, psv.keyvalue FROM page_setting_values AS psv INNER JOIN page_settings AS ps ON ps.id = psv.setting_id WHERE psv.page_revision_id = :revision
有:修訂代表你的版本ID你現在可以組裝從結果集的關聯數組:
$settings = []; $result = $db->executeQuery('...')->fetchAll(); foreach($result as $setting) { $settings[$setting['keyname']] = $setting['keyvalue']; }
希望幫助;)
對不起,如果我不清楚,我將編輯我的問題,沒有代碼,使之成爲儘可能簡單。 –