我希望以列名的第一部分是字符串的方式连接列名,第二部分是另一个查询的结果的数字.
例如:
SELECT CONCAT('column', mytable.mycolumn) FROM table ...
Run Code Online (Sandbox Code Playgroud)
这可以通过某种方式完成.这样它不会给我错误,但我没有得到预期的结果,似乎连接不起作用.
Chr*_*est 25
我之前曾说过这不可能,但我错了.我最终需要这样的东西,所以我环顾四周,发现服务器端预处理语句允许你从字符串构建和执行任意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
;
Run Code Online (Sandbox Code Playgroud)
Arj*_*jan 13
如果列数是固定的,那么非动态方法可以是:
select
case mytable.mycolumn
when 1 then column1 -- or: when 'a' then columna
when 2 then column2
when ...
else ...
end as my_semi_dynamic_column
from ...
Run Code Online (Sandbox Code Playgroud)