MySQL:Select 基于另一个 table 的值
MySQL: Select based on values of another table
问题:
在MySQL中,我有以下table:
table1:
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
在此table中,每10秒输入一个新行,其中包含Count数据(table实际上有几千行长)并且具有固定数量的列Count_x(比如从 0 到 9)。
我有另一个 table 具有以下结构:
table2:
id name
Count_0 a
Count_1
Count_2 c
这个 table 的行数与第一个 table 的 Count_x 列一样多。
是否可以有一个查询包含第一个输出中的数据,但只考虑在第二个 table 中有名称的列加上日期?在此示例中,输出将是:
date Count_0 Count_2
2018-03-15 09:29:01 1 5
2018-03-15 09:29:11 2 6
额外问题:是否可以根据秒 table 中的数据自动更改列名?在此示例中,输出将是:
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;
问题:
在MySQL中,我有以下table:
table1:
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
在此table中,每10秒输入一个新行,其中包含Count数据(table实际上有几千行长)并且具有固定数量的列Count_x(比如从 0 到 9)。
我有另一个 table 具有以下结构:
table2:
id name
Count_0 a
Count_1
Count_2 c
这个 table 的行数与第一个 table 的 Count_x 列一样多。
是否可以有一个查询包含第一个输出中的数据,但只考虑在第二个 table 中有名称的列加上日期?在此示例中,输出将是:
date Count_0 Count_2
2018-03-15 09:29:01 1 5
2018-03-15 09:29:11 2 6
额外问题:是否可以根据秒 table 中的数据自动更改列名?在此示例中,输出将是:
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;