gpt4 book ai didi

mysql - 根据从以下位置获得的列名称列表动态选择列

转载 作者:行者123 更新时间:2023-11-30 01:25:00 25 4
gpt4 key购买 nike

我需要执行一个简单的选择语句,但基于动态的列名称列表,并过滤为表中的小写列名称。表结构不受我的控制并且经常变化。我不可能事先知道任何列名称 - 只知道有大写名称(不需要)和小写名称(想要)。

表:

COL_UPPERCASE_1 COL_UPPERCASE_2 col_lowercase_1 col_lowercase_2
data1 data2 data3 data4
data5 data6 data7 data8

我可以使用以下方法获取我想要的列名称列表:

select group_concat(column_name) FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE (`TABLE_SCHEMA` = 'the_database' AND `TABLE_NAME` = 'the_table' AND column_name = BINARY LOWER(column_name));

返回我想要的列列表:

+---------------------------------+
| group_concat(column_name) |
+---------------------------------+
| col_lowercase_1,col_lowercase_2 |
+---------------------------------+

我的问题:如何有效地将查询结果插入到我的 select 语句中?例如

select <column list from above "select group_concat..." query> from my_table;

具体来说,在上面的示例中,我想要相当于:

select col_lowercase_1,col_lowercase_2 from the_table;

返回:

+---------------------------------+
| col_lowercase_1 col_lowercase_2 |
+---------------------------------+
| data3 data4 |
| data7 data8 |
+---------------------------------+

最佳答案

您可以使用exec()从某些文本运行查询

例如

declare @Columns VARCHAR(8000);
select @Columns = select group_concat(column_name) FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE (`TABLE_SCHEMA` = 'the_database' AND `TABLE_NAME` = 'the_table' AND column_name = BINARY LOWER(column_name));
exec ( 'select ' + @columns ' from the_table' );

关于mysql - 根据从以下位置获得的列名称列表动态选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18105232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com