MySQL:根据另一个表

时间:2018-03-27 12:26:20

标签: mysql nested-queries

问题:

在MySQL中,我有下表:

表1:

id           date               Count_0    Count_1      Count_2
1     2018-03-15 09:29:01         1          3            5  
2     2018-03-15 09:29:11         2          4            6

在此表中,每隔10秒输入一个新行,其中包含计数数据(表实际上是数千行),并且具有固定数量的列Count_x(例如从0到9)。

我有另一张表,其结构如下:

表2:

id       name             
Count_0   a  
Count_1       
Count_2   c

此表的行数与第一个表的Count_x列数相同。

是否可以使用包含第一个输出数据的查询,但只考虑第二个表中具有名称的列加上日期?在此示例中,输出将为:

       date              Count_0    Count_2      
2018-03-15 09:29:01        1          5  
2018-03-15 09:29:11        2          6 

奖金问题:是否可以根据第二个表中的数据自动更改列名?在这个例子中,输出将是:

       date                a          c      
2018-03-15 09:29:01        1          5  
2018-03-15 09:29:11        2          6 

我的测试:

我尝试过使用不起作用的枢轴,或者组合的SELECT语句并没有真正起作用:

SELECT id FROM table2 WHERE name <> ''

正确地给了我带有现有名字的Count_x

SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`='db' AND `TABLE_NAME`='table1';

正确地给了我table1的列名。 现在我不知道如何组合这两个查询。我正朝着正确的方向前进吗?

感谢您的建议。

1 个答案:

答案 0 :(得分:1)

试试这个:

SET @colname = null;
SET @query = null;
select group_concat(count_name) from table2 where name is not null into 
@colname;

SET @query = CONCAT('select date, ',@colname,' from table1');

PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;