是否可以選擇名稱為字串的欄位?
從表格
中選擇「欄位名稱」
我需要這個觸發器才能具有動態欄位名稱 類似的東西
SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
P粉9860280392023-10-21 00:17:14
正如這些正確答案的提示一樣,您也可以在預存程序中執行此操作,這在 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
P粉1904436912023-10-21 00:09:50
如果該字串位於您的外部應用程式(例如 PHP)中,當然,只需建構 MySQL 語句即可。
如果字串位於 MySQL 表內,則不能。 MySQL 沒有 eval() 或此類函數。以下是不可能的:
假設您有一個表格 queries
,其中的欄位 columnname
引用表 mytable
中的欄位名稱之一。 查詢
中可能有其他列,讓您可以選擇所需的列名
。
INSERT INTO queries (columname) VALUES ("name") SELECT (select columnname from queries) from mytable
但是,您可以使用準備好的語句< /a>.請注意,這非常 hacky。
SELECT columnname from queries into @colname; SET @table = 'mytable'; SET @s = CONCAT('SELECT ',@colname,' FROM ', @table); PREPARE stmt FROM @s; EXECUTE stmt;