Подтвердить что ты не робот

Имя поля mysql из переменной

Можно ли выбрать поле, имя которого является строкой?

SELECT 'fieldname' FROM table

Мне нужно, чтобы для триггера были имена динамических полей что-то вроде

SET fieldname = NEW.`name`;
UPDATE table SET fieldname = 1 ; 
4b9b3361

Ответ 1

Если строка находится во внешнем приложении (например, PHP), обязательно создайте инструкцию MySQL.

Если строка находится внутри таблицы MySQL, вы не можете. MySQL не имеет eval() или такой функции. Невозможно следующее:

Предположим, что у вас есть "запросы" таблицы с полем "имя столбца", которое относится к одному из имен столбцов в таблице "mytable". В "запросах" могут быть дополнительные столбцы, которые позволяют вам выбрать нужное имя столбца...

INSERT INTO queries  (columname) VALUES ("name")
SELECT (select columnname from queries) from mytable

Однако вы можете работать с ПОДГОТОВЛЕННЫЕ ЗАЯВЛЕНИЯ. Помните, что это очень хаки.

SELECT columnname from queries into @colname;
SET @table = 'mytable';
SET @s = CONCAT('SELECT ',@colname,' FROM ', @table);

PREPARE stmt FROM @s;
EXECUTE stmt;

Ответ 2

Если вы хотите выбрать более одного столбца:

SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.`COLUMNS` C 
WHERE table_name = 'MyTb' AND COLUMN_NAME LIKE '%whatever%' INTO @COLUMNS;

SET @table = 'MyTb';
SET @s = CONCAT('SELECT ',@columns,' FROM ', @table);

PREPARE stmt FROM @s;
EXECUTE stmt;