是否可以选择名称为字符串的字段?
SELECT 'fieldname' FROM table
我需要这个来让触发器具有像这样的动态字段名称
SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
如果该字符串在您的外部应用程序(如PHP)中,请确保构造MySQL语句。
如果字符串在MySQL表中,则不能。MySQL没有eval()或没有这样的功能。以下是不可能的:
eval()
假设您有一个表,queries其中的字段columnname引用该表中的列名之一mytable。可能会有其他列queries允许您选择所需的列columnname。
queries
columnname
mytable
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;