假设我有一个选择查询:
SELECT * FROM tablename
表格中的列是:field1、field2 和 field3
有谁知道是否有可能获得只有 1 行和 1 个字段的结果集,列的值以逗号分隔,如下所示:
"fieldvalue1, fieldvalue2, fieldvalue3"
问题是我事先不知道表的列名...
另一个问题是准备好的语句不是要走的路,因为所有这些都应该在触发器内完成,而 MySQL 不允许在触发器内进行动态游标/选择。
最佳答案
我进行了一些研究,结果只得出 GROUP_CONCATenating 正确的列名。但问题是,
SELECT (SELECT GROUP_CONCAT( cols.column_name) FROM (SELECT column_name FROM information_schema.columns WHERE table_name='test_table') as cols) FROM test_table
将返回一个包含列名的相同串联字符串,每个表行一次,而不是将其作为外部 select 语句的列名进行评估并返回实际值。
从我在讨论此类问题的所有论坛(而且有很多)中读到的内容来看,如果没有准备好的陈述,真的没有办法让它工作。
我只能想到另一种方法来做到这一点,那就是在每个表上都有一个专用列,您可以在其中连接插入或更新时的各个列值,这样您就可以简单地选择这个字段而不是全套字段。
关于MySQL : multiple column values as 1 comma-separated string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4589203/