【问题标题】:MySql dynamic column nameMySql 动态列名
【发布时间】:2014-06-25 15:13:46
【问题描述】:

[进行重大修改以使事情清晰]

我想编写一个返回动态列名的查询,如下所示:

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 sql subquery


    【解决方案1】:

    这不是正确的 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,其中 :revision 代表您的修订 ID
    • 您现在可以从该结果集中组装一个关联的数组:

      $settings = []; $result = $db->executeQuery('...')->fetchAll(); foreach($result as $setting) { $settings[$setting['keyname']] = $setting['keyvalue']; }

    希望有所帮助;)

    【讨论】:

    • 对不起,如果我不清楚,我将编辑我的问题,没有代码,使其尽可能简单。
    猜你喜欢
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 2020-11-08
    • 2013-08-13
    • 1970-01-01
    相关资源
    最近更新 更多