Insert into selected table name
I have a table under aliases in my MySQL database.
Looks like:
------------------
| Id | Alias |
------------------
|1 | 'TabX' |
------------------
|2 | 'TabY' |
...
| | |
------------------
And I need to insert into those tables like this:
INSERT INTO (SELECT Alias FROM Aliases WHERE id=1) (somevalue) VALUES (value);
This does not work. Please, help.
+3
Ivan Fridrich
source
to share
3 answers
You can contact him using the prepared instructions:
SET @alias = (SELECT Alias FROM Aliases WHERE id = 1);
SET @sql = CONCAT('INSERT INTO ', @alias, ' (somevalue) VALUES (value)');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
+1
Vladimir Kovpak
source
to share
For this you need to do PROCEDURE
. And use prepared statements for this purpose. You need a procedure like this:
DELIMITER $$
DROP PROCEDURE IF EXISTS `DB`.`INSERT_VAR`$$
CREATE DEFINER=`user`@`host` PROCEDURE INSERT_VAR(IN tableName VARCHAR(200))
BEGIN
SET @insert_query=CONCAT("INSERT INTO ", tableName, " (id) SELECT id FROM test");
PREPARE stmtInsert FROM @insertTab;
EXECUTE stmtInsert;
END$$
DELIMITER ;
You need to modify this procedure according to your needs.
0
Michael Sivolobov
source
to share
try it
INSERT INTO table_name
SELECT Alias
FROM Aliases
WHERE id = 1
-1
REX SAMSON
source
to share