SELECT `row_name` FROM `table` выводит `row_name` и все строки
А что делать, если `row_name` иногда меняется на другой столбец?
Как использовать переменную в названии столбца? SELECT @VAR FROM `table`
как использовать переменную в названии столбца в процедурах?
Да точно так же. Только сперва получить нужное значение из таблицы в UDV (SELECT INTO). Или сразу в запросе собрать весь динамический запрос.
SELECT CONCAT('SELECT ', columnName, ' FROM `table`') INTO @sql FROM my_table WHERE id = NNN;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
с динамическим SQL я разобрался
А с базовым синтаксисом - не разобрался. Ибо твои пять строк эквивалентны вульгарному SELECT 'column' FROM `table`;. У тебя 'column' получился не имя поля, а строковый литерал.
SQL изначально создавался как язык для бизнеса. Тоесть не для программистов, а для людей которые заняты обычной деловой денежной активностью.
Но если ты - счастливый обладатель PHP или Node языка то ты можешь динамически создавать любые тексты SQL и подставлять туда имя столбца из любых переменных языка. Благо string interpolation есть почти во всех языках. Например в PHP:
Сергей delphinpro, ну этот голый sql не на голом железе крутится. Чел сидит на Windows-машине. Значит у него есть Excel. Или есть PowerShell. Ну это так. Я просто придираюсь.
Если нужна автоматизация рутиты - то почему-бы и не поставить какой-то транслятор?
Тут есть много опций, если когда такое происходит, значение row_name - Null, то можно использовать
coalesce (row_name, other_column). Если значения всегда непустые, то проще написать функцию, которая будет подставлять необходимое название колонки.