MySQL在单个语句中插入(有条件选择的表)

时间:2016-06-29 06:48:41

标签: mysql

我的dbm知识仍然非常有限,所以我不知道如何处理/解决这个问题。我希望INSERT INTO两个表中的一个,比如table1和table2,但是在SELECT子查询之后我才知道哪个表。像这样:

INSERT INTO (SELECT tblname) SELECT *, IF(somecondition, 'table1', 'table2') as tblname FROM `anothertable` WHERE id = 'someid'

我试过这个测试:

INSERT INTO (SELECT tblname) SELECT *, 'table1' as tblname FROM `anothertable` WHERE id = 'someid'

但那不起作用。

我知道我可以在SELECT语句中使用子查询(非常有用!),并且我可以在技术上通过2个语句中的NOT EXISTS实现我想要的,并且我知道我不能< / em> INSERT分为两个表,我知道在一个语句(see docs)中使用@user变量是不可靠的。那么,有没有办法实现我想要的,在一个声明中

1 个答案:

答案 0 :(得分:2)

你可以用case语句来做。

SELECT CASE WHEN ( SELECT  IF(somecondition, 'table1', 'table2') as tblname FROM `anothertable` = 'table1' )
    THEN <QUERY A>
    ELSE <QUERY B>
END