gpt4 book ai didi

mysql - 将 SQL 表 header value 与另一个表列值匹配

转载 作者:行者123 更新时间:2023-11-29 06:51:44 38 4
gpt4 key购买 nike

有 2 个数据库表,如下表 Table_1 和 Table_2。 Table_1 列索引与 table_2 的 id 值匹配。 Table_2 的名称值将作为查询结果的列标题。

Table_1
______________________________________________
| date |city_1 | city_2 | ... | city_100 |
|-----------|-------|-------------------------|
| 20.02.2013| 4 | 34 | ... | 222 |
| 21.02.2013| 3 | 10 | ... | 33 |
| ... | ... | ... | ... | ... |
|_____________________________________________|


Table_2
___________________
| id | name |
|-------|---------|
| 1 | newyork |
| 2 | london |
| ... | ... |
| 100 | istanbul|
|_________________|

预期结果如下

  __________________________________________________________
| date | newyork | london | ... | istanbul |
|-----------|------------|------------|-------|-----------|
| 20.02.2013| 4 | 34 | ... | 222 |
| 21.02.2013| 3 | 10 | ... | 33 |
| ... | ... | ... | ... | ... |
|___________|____________|____________|_______|___________|

获取上述结果的 SQL 查询是什么?

谢谢

最佳答案

您可以使用这样的解决方案:

SET @sql = NULL;

SELECT GROUP_CONCAT(COALESCE(CONCAT(COLUMN_NAME, ' as ', Table_2.Name), COLUMN_NAME))
FROM
INFORMATION_SCHEMA.COLUMNS
LEFT JOIN Table_2
ON Table_2.ID = SUBSTRING_INDEX(COLUMN_NAME, '_', -1)
WHERE table_name = 'Table_1' INTO @sql;

SET @sql = CONCAT('SELECT ', @sql, ' FROM Table_1');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

查看here .此代码将提取 Table_1 的所有列名,并尝试将列名与 Table_2 中的 ID 连接起来。如果匹配,我将返回带有别名的列的名称,如下所示:

city_1 AS newyour

并使用 GROUP_CONCAT 变量 @sql 将包含所有列,如下所示:

date,city_1 as newyork,city_2 as london,city_100 as istanbul

然后我将 'SELECT ' + 带有别名的列名 + ' FROM Table_1' 连接起来,并执行生成的查询。

关于mysql - 将 SQL 表 header value 与另一个表列值匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14977754/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com