gpt4 book ai didi

mysql - 如何在mySQL中动态选择列名

转载 作者:可可西里 更新时间:2023-11-01 07:08:18 25 4
gpt4 key购买 nike

我想选择列名,但我不知道表结构,它可能会改变,所以我不能只用列名硬编码 select 语句。我也不想选择每一列。有没有简单的方法可以做到这一点?

我的想法是它是这两个查询的某种组合,但我的 SQL 不是那么好。

SHOW COLUMNS FROM table_name;
SELECT * FROM table_name;

我尝试使用子选择,但没有成功。似乎什么都没发生,我没有收到错误,我只是没有得到结果

SELECT (SELECT column_name 
FROM information_schema.columns
WHERE table_name ='table_name')
FROM table_name;

也许我需要加入?..无论如何,任何帮助都会很棒,谢谢

最佳答案

试试这个 SQLFiddle :

CREATE TABLE atable (
prefix1 VARCHAR(10)
,prefix2 VARCHAR(10)
,notprefix3 INT
,notprefix4 INT
);

INSERT INTO atable VALUES ('qwer qwer', 'qwerqwer', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'asdfaasd', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'qrt vbb', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'sdfg sdg', 1, 1);

SELECT CONCAT('SELECT ', GROUP_CONCAT(c.COLUMN_NAME), ' FROM atable;')
INTO @query
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = 'atable'
AND c.COLUMN_NAME LIKE 'prefix%'
ORDER BY c.ORDINAL_POSITION;

PREPARE stmt FROM @query;

EXECUTE stmt;

一些问题:

您可能希望对结果集使用某种 ORDER BY。

在连接和事物方面,您可以做的事情是有限的。

您将验证移至运行时,它更有可能被测试遗漏。

您希望能够轻松处理架构更改。此技术将仅处理您可以预见的特定类型的架构更改,而其他类型的更改您可能无论如何都必须更改此代码。

关于mysql - 如何在mySQL中动态选择列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507683/

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