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_TABLEhead и имел header.Key поэтому я изменил его на HEADER_TABLE header

Другие вопросы по тегам