在 MySQL 中动态连接列名以执行查询
问题陈述:
在 MySQL 中,需要在查询中连接列名,其中列名的第一部分是字符串,第二部分是从另一个查询检索到的数字。
尝试的解决方案:
下面的 SQL 语句尝试实现串联:
<code class="sql">SELECT CONCAT('column', mytable.mycolumn) FROM table ...</code>
但是,这种方法没有得到预期的结果,并且串联似乎没有效果。
解决方案:
与之前的看法相反,确实可以使用服务器端准备好的语句在 MySQL 中动态构造列名称。请考虑以下方法:
<code class="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 ;</code>
此代码根据列表的内容动态构造查询字符串。然后使用prepare语句编译查询字符串,随后可以使用execute语句执行该查询字符串。
以上是MySQL 查询执行时可以动态连接列名吗?的详细内容。更多信息请关注PHP中文网其他相关文章!