首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SQL表头值与另一个表列的值进行匹配

问将SQL表头值与另一个表列的值进行匹配
EN

Stack Overflow用户
提问于 2013-02-20 18:37:32
回答 1查看 2.7K关注 0票数 1

下面有两个数据库表Table_1 & Table_2。Table_1列索引与table_2的id值匹配。Table_2的Name值将作为查询结果的列标题。

代码语言:javascript
复制
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|
|_________________|

预期结果如下

代码语言:javascript
复制
  __________________________________________________________
  |  date     |  newyork   |   london   |  ...  |  istanbul |
  |-----------|------------|------------|-------|-----------|
  | 20.02.2013|     4      |     34     |  ...  |    222    |
  | 21.02.2013|     3      |     10     |  ...  |     33    |
  |   ...     |    ...     |    ...     |  ...  |    ...    |
  |___________|____________|____________|_______|___________| 

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-20 19:12:04

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

代码语言:javascript
复制
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中的in连接起来。如果匹配,我将返回带有别名的列名,如下所示:

代码语言:javascript
复制
city_1 AS newyour

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

代码语言:javascript
复制
date,city_1 as newyork,city_2 as london,city_100 as istanbul

然后,我使用别名+ ' FROM Table_1'连接'SELECT ' +列名,并执行结果查询。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14977754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档