我的MySQL数据库中有一个叫做别名的表。
看起来像这样:
------------------
| Id | Alias |
------------------
|1 | 'TabX' |
------------------
|2 | 'TabY' |
...
| | |
------------------
我需要插入这样的表:
INSERT INTO (SELECT Alias FROM Aliases WHERE id=1) (somevalue) VALUES (value);
这不起作用。请帮忙。
答案 0 :(得分:1)
您可以使用预先准备的声明与其联系:
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 :(得分:0)
您需要为此PROCEDURE
。并为此目的使用准备好的语句。你需要这样的程序:
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 ;
您需要修改此程序以满足您的需求。
答案 2 :(得分:-1)
试试这个
INSERT INTO table_name
SELECT Alias
FROM Aliases
WHERE id = 1