имя поля mysql из переменной - PullRequest
20 голосов
/ 13 декабря 2010

можно ли выбрать поле с именем string?

SELECT 'fieldname' FROM table

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

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

Ответы [ 2 ]

21 голосов
/ 13 декабря 2010

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

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

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

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;
0 голосов
/ 13 ноября 2013

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

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...