mysql использует псевдонимы столбцов, прочитанные из базы данных
Я хочу отображать имена столбцов в другой таблице, например, так:
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'
Приведенный выше запрос неверен - возможно ли использовать "динамические" имена столбцов из другой таблицы? Если так, то каков правильный синтаксис?
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;
Как упомянуто в комментарии, маршрут, по которому вам придется идти, - это установка псевдонима, например:
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