1

我想在另一个表中显示列的名称,如下所示:

select data.data1 as head.colHeader1, data.data2 as head.colHeader2 from DATA_TABLE data, HEADER_TABLE head where data.Key = header.Key and header.key = 'someUniqueKey'

上面的查询不正确 - 是否可以使用另一个表中的“动态”列名?如果是这样,正确的语法是什么?

4

2 回答 2

2

答案很简单:在 SQL 中是不可能的。列别名是常量。您必须动态创建查询以实现您想要的:

SET @column_alias1 := SELECT colHeader1 FROM HEADER_TABLE header WHERE header.key = 'someUniqueKey';
SET @column_alias2 := SELECT colHeader2 FROM HEADER_TABLE header WHERE header.key = 'someUniqueKey';
SET @query := CONCAT('select data.data1 as `', @column_alias1, '`, data.data2 AS `', @column_alias2, '` FROM DATA_TABLE data where data.Key = header.Key ');
PREPARE dynamic_statement FROM @query;
EXECUTE dynamic_statement;
于 2018-06-19T14:40:51.967 回答
0

如评论中所述,您必须走的路线是自己设置别名,例如:

select data.data1 as 'what you want', data.data2 as 'what you want' 
from DATA_TABLE data 
inner join HEADER_TABLE header where data.Key = header.Key and header.key = 'someUniqueKey'

也作为一个提醒你曾经HEADER_TABLE head和曾经header.Key所以我把它改成HEADER_TABLE header

于 2018-06-19T14:35:59.220 回答