繁体   English   中英

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

[英]MySQL: Select based on values of another table

问题:

在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数据输入一个新行(表实际上是数千行),并且具有固定数量的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的列名。 现在,我不知道如何结合这两个查询。 我朝正确的方向前进吗?

感谢您的意见。

尝试这个:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM