我的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变量是不可靠的。那么,有没有办法实现我想要的,在一个声明中?
答案 0 :(得分:2)
你可以用case语句来做。
SELECT CASE WHEN ( SELECT IF(somecondition, 'table1', 'table2') as tblname FROM `anothertable` = 'table1' )
THEN <QUERY A>
ELSE <QUERY B>
END