2014-09-13 39 views
-2

我对sql不太敏锐,而且我有一个问题。 我有两个表,当简化的看起来像这样:加入表的列名称等于单元格的值

T1

id |  name  | photo 
1 | robert  | img1.jpg 
2 | john   | img2.jpg 
1 | jess   | img3.jpg 

T2

id |  title | field 
1 | User Name | name 
2 | User Photo | photo 

我所要的输出是这样的:

 User Name | User Photo 
    robert  | img1.jpg 
    john   | img2.jpg 

在简单的解释中,我想从T2中获取标题列的值,其中字段值等于T1上的列名称,并使用输出表列名称将其切换。

有没有可能这样做? 如何?

谢谢! Ran

+1

输出只是T1与不同的列名称。你可以用别名来做到这一点。 – ydaetskcoR 2014-09-13 09:55:25

+0

如何从T2表中获取字段列的值作为输出表的别名? – maryum375 2014-09-13 10:01:05

+0

你为什么想要?你已经知道了。除非你的例子过于简化,否则这是一个完全没有问题的问题 – ydaetskcoR 2014-09-13 10:02:48

回答

0

由于我是commented,您所需的输出只是带有别名的T1。

别名可以用来像:

SELECT `name` AS `User Name`, `photo` AS `User Photo` 
FROM `T1`; 

这是不可能的,我知道的,肯定不会在MySQL任何RDBMS使用动态别名。做类似:

SELECT `name` AS (SELECT `title` 
        FROM `T2` 
        WHERE `field` = 'name'), 
     `photo` AS (SELECT `title` 
        FROM `test`.`title_photo` 
        WHERE `T2`) 
FROM `T1`; 

将给出语法错误。

即使它可以让你这样做,你也不会从中得到任何东西,因为它只是一个列的名称,它是直接的1对1翻译 - 只是直接将其作为别名进行硬编码。

相关问题