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

MySQL在单个语句中插入(有条件选择的表),mysql,Mysql,我的dbm知识仍然非常有限,因此我不确定如何处理/解决这个问题。我想插入两个表中的一个,比如说,表1和表2,但在SELECT子查询之后我才知道是哪个表。大概是这样的: INSERT INTO (SELECT tblname) SELECT *, IF(somecondition, 'table1', 'table2') as tblname FROM `anothertable` WHERE id = 'someid' 我试着以此作为测试: INSERT INTO (SELECT tblnam

我的dbm知识仍然非常有限,因此我不确定如何处理/解决这个问题。我想插入两个表中的一个,比如说,表1和表2,但在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语句中使用子查询,非常有用!,从技术上讲,我可以实现我想要的,但不存在于两个语句中,我知道我不能插入到两个表中,我知道在一个语句中使用@user变量是不可靠的。那么,有没有一种方法可以在一个语句中实现我想要的呢?

您可以使用case语句来实现

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

你可以用case语句来做

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

嗨,我试过这个,和它的变体,但似乎什么都不起作用。嗨,我试过这个,和它的变体,但似乎什么都不起作用。我不这么认为,除了单个stmt是对存储过程的调用之外。这里有条件连接,但没有条件表。别忘了,你可以随时连接到任何准备好的Stmt中,如下面所示。我不这么认为,除了单个Stmt是对存储过程的调用之外。这里有条件连接,但没有条件表。别忘了,你可以像下面这样一直连接到任何准备好的Stmt中