小编典典

MySQL concat()创建要在查询中使用的列名?

mysql

我想以这样的方式串联列名:列名的第一部分是一个字符串,第二部分是一个数字,这是另一个查询的结果。

例如:

SELECT CONCAT('column', mytable.mycolumn) FROM table ...

能以某种方式做到这一点。这样,它不会给我带来错误,但是我没有得到预期的结果,并且似乎串联不起作用。


阅读 467

收藏
2020-05-17

共1个答案

小编典典

我之前曾说过无法做到这一点,但是我错了。我本人最终需要这样的东西,所以我环顾四周,发现服务器端准备好的语句使您可以从字符串构建和执行任意SQL语句。

这是我只是为了证明这一概念所做的一个示例:

set @query := (
  select concat(
    "select",
      group_concat(concat("\n  1 as ", column_name) separator ','),
    "\nfrom dual")
  from information_schema.columns
  where table_name = 'columns')
;
prepare s1 from @query
;
execute s1
;
deallocate prepare s1
;
2020-05-17