是否可以選擇名稱為字串的欄位?
從表格中選擇「欄位名稱」
從表格
我需要這個觸發器才能具有動態欄位名稱 類似的東西
SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
正如這些正確答案的提示一樣,您也可以在預存程序中執行此操作,這在 MySQL 8x 社群中非常適合我:
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `SP_LIST_COLLECTORS`( IN P_email VARCHAR(60),#Admin email IN P_password_hash VARCHAR(255),#Admin hash IN P_filter_field VARCHAR(80), IN P_filter_value VARCHAR(255) ) BEGIN DECLARE V_filter_field VARCHAR(80); SET V_filter_field = P_filter_field; BEGIN GET DIAGNOSTICS CONDITION 1 @ERRNO = MYSQL_ERRNO, @MESSAGE_TEXT = MESSAGE_TEXT; SELECT 'ERROR' AS STATUS, CONCAT('MySQL ERROR: ', @ERRNO, ': ', @MESSAGE_TEXT) AS MESSAGE; END; SET @statement = CONCAT('SELECT collector_id, email, address, post_code, phone, alt_phone, contact_name FROM collectors_table WHERE ',P_filter_field, '=\'', P_filter_value, '\';'); #SELECT collector_id, email, address, post_code, phone, alt_phone, contact_name FROM collectors_table WHERE (V_filter_field) = P_filter_value; PREPARE stmnt FROM @statement; EXECUTE stmnt; END
如果該字串位於您的外部應用程式(例如 PHP)中,當然,只需建構 MySQL 語句即可。
如果字串位於 MySQL 表內,則不能。 MySQL 沒有 eval() 或此類函數。以下是不可能的:
假設您有一個表格 queries,其中的欄位 columnname 引用表 mytable 中的欄位名稱之一。 查詢中可能有其他列,讓您可以選擇所需的列名。
queries
columnname
mytable
查詢
列名
INSERT INTO queries (columname) VALUES ("name") SELECT (select columnname from queries) from mytable
但是,您可以使用準備好的語句.請注意,這非常 hacky。
SELECT columnname from queries into @colname; SET @table = 'mytable'; SET @s = CONCAT('SELECT ',@colname,' FROM ', @table); PREPARE stmt FROM @s; EXECUTE stmt;
正如這些正確答案的提示一樣,您也可以在預存程序中執行此操作,這在 MySQL 8x 社群中非常適合我:
如果該字串位於您的外部應用程式(例如 PHP)中,當然,只需建構 MySQL 語句即可。
如果字串位於 MySQL 表內,則不能。 MySQL 沒有 eval() 或此類函數。以下是不可能的:
假設您有一個表格
queries
,其中的欄位columnname
引用表mytable
中的欄位名稱之一。查詢
中可能有其他列,讓您可以選擇所需的列名
。但是,您可以使用準備好的語句.請注意,這非常 hacky。