nome del campo mysql dalla variabile

è ansible selezionare il campo il cui nome è una stringa?

SELECT 'fieldname' FROM table

ho bisogno di questo per trigger per avere nomi di campi dinamici qualcosa di simile

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

Se la stringa è nella tua applicazione esterna (come PHP), certo, costruisci l’istruzione MySQL.

Se la stringa è all’interno di una tabella MySQL, non è ansible. MySQL non ha alcuna funzione eval () o simile. Quanto segue è imansible:

Supponiamo di avere una tabella ‘query’ con un campo “nome colonna” che si riferisce a uno dei nomi di colonna nella tabella “mytable”. Potrebbero esserci colonne aggiuntive nelle “query” che ti permettono di selezionare il nome della colonna che vuoi …

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

Tuttavia, è ansible lavorare con INDICI PREPARATI . Essere consapevoli che questo è molto hacky.

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

Se si desidera selezionare più di una colonna:

 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;