一尘不染

来自变量的mysql字段名称

mysql

是否可以选择名称为字符串的字段?

SELECT 'fieldname' FROM table

我需要这个来让触发器具有像这样的动态字段名称

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

阅读 383

收藏
2020-05-17

共1个答案

一尘不染

如果该字符串在您的外部应用程序(如PHP)中,请确保构造MySQL语句。

如果字符串在MySQL表中,则不能。MySQL没有eval()或没有这样的功能。以下是不可能的:

假设您有一个表,queries其中的字段columnname引用该表中的列名之一mytable。可能会有其他列queries允许您选择所需的列columnname

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

但是,您可以使用PREPARED STATEMENTS。请注意,这很hacky。

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

PREPARE stmt FROM @s;
EXECUTE stmt;
2020-05-17