我有办法吗?
SELECT (SELECT * from table2) FROM table1
在table2
中,我有一个列表,我想从table1
中选择一列,如下所示:
Week starting 24/01/2015
,Week starting 31/01/2015
,Week starting 07/02/2015
,Week starting 14/02/2015
,Week starting 21/02/2015
,Week starting 28/02/2015
,Week starting 07/03/2015
,Week starting 14/03/2015
Week starting 21/03/2015
,Week starting 28/03/2015
,Week starting 04/04/2015
,Week starting 11/04/2015
答案 0 :(得分:1)
我认为这个答案包含您正在寻找的信息:
How to select column names dynamically in mySQL:
试试这个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。
在连接和事物方面你可以做的事情是有限制的。
您将验证移至运行时,它可能会被测试错过。
您希望能够轻松处理架构更改。此技术仅处理您可以预见的某种类型的架构更改,而其他人则可能必须更改此代码。