MYSQL SELECT语句新手

时间:2015-04-23 14:47:46

标签: mysql select

我有办法吗?

SELECT (SELECT * from table2) FROM table1

table2中,我有一个列表,我想从table1中选择一列,如下所示:

Week starting 24/01/2015Week starting 31/01/2015Week starting 07/02/2015Week starting 14/02/2015Week starting 21/02/2015Week starting 28/02/2015Week starting 07/03/2015Week starting 14/03/2015 Week starting 21/03/2015Week starting 28/03/2015Week starting 04/04/2015Week starting 11/04/2015

1 个答案:

答案 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。

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

您将验证移至运行时,它可能会被测试错过。

您希望能够轻松处理架构更改。此技术仅处理您可以预见的某种类型的架构更改,而其他人则可能必须更改此代码。