Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:根据另一个表的值进行选择_Mysql_Nested Queries - Fatal编程技术网

MySQL:根据另一个表的值进行选择

MySQL:根据另一个表的值进行选择,mysql,nested-queries,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秒输入一个新行,其中包含计数数据(表实际上有几千行长),并且有固

问题:

在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列数相同

是否可以有一个包含第一个输出数据的查询,但只考虑第二个表中有名称加上de date的列?在本例中,输出为:

       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 
附加问题:是否可以根据第二个表中的数据自动更改列名?在本例中,输出为:

       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 <> ''
正确地给出了表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;
试试这个:

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;

我建议你修改方案的设计我建议你修改方案的设计谢谢你的回答,它在一个过程中正常工作。但是,在查询中是否可以使用相同的方法?在查询中不可能使用相同的方法。例如,在普通选择中,您有一组恒定的选定行。感谢您的回答,它在过程中正常工作。但是,在查询中是否可以使用相同的方法?在查询中不可能使用相同的方法。例如,在“普通选择”中,您有一组恒定的选定行。