2014-06-25 42 views
1

[主要編輯,以把事情說清楚]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

回答

0

這是沒有正確的SQL語法,即使因爲兩個查詢(選定的字段和它的別名)都是子查詢並且彼此不相關。因此,即使語法正確,mysql也不可能區分要連接什麼名稱的名稱,即使語法正確...

您已經使用了一個或多或少規範化的關係表,因此我建議採用以下解決方案:

  • 您在單獨的查詢中選擇版本ID和名稱;它們存儲在PHP,並將其用於任何你想要的
  • 接下來,評估以下查詢轉換爲分離的結果集: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']; }

希望幫助;)

+0

對不起,如果我不清楚,我將編輯我的問題,沒有代碼,使之成爲儘可能簡單。 –