在mysql和h2中使用相同语法连接删除

在mysql和h2中使用相同语法连接删除,mysql,h2,rdbms,Mysql,H2,Rdbms,我在mysql中有一个生产数据库,在H2中做了一些Junit测试。 我正在努力寻找一种既能在测试中工作又能在生产中工作的语法来删除两个表中的记录。 SQL查询将使用发送到数据库 jdbctemplate.update(sqlQuery, queryArgs); 到目前为止,我发现查询可以在mysql上工作,但不能在H2上工作,反之亦然 我有两个表:请求和响应,它们在common datetime和milisec中有两列。这对夫妇(datetime,milisec)是请求的主键,同一对夫妇可以有

我在mysql中有一个生产数据库,在H2中做了一些Junit测试。
我正在努力寻找一种既能在测试中工作又能在生产中工作的语法来删除两个表中的记录。
SQL查询将使用发送到数据库

jdbctemplate.update(sqlQuery, queryArgs);
到目前为止,我发现查询可以在mysql上工作,但不能在H2上工作,反之亦然

我有两个表:请求和响应,它们在common datetime和milisec中有两列。这对夫妇(datetime,milisec)是请求的主键,同一对夫妇可以有多个响应

我想删除与某些请求匹配的响应

此请求适用于我的sql,但不适用于H2:

DELETE r.*
FROM responses AS r NATURAL JOIN Call_requests AS s
WHERE -- criteria on call_requests table
最接近我的是

DELETE FROM responses
where (datetime, milisec) in 
(select datetime, milisec from requests where -- criteria)
这个更高版本适用于mysql,而不是h2,如下所示,元组周围带括号的是相反的(适用于h2,而不是mysql)


哦,
r.*
works!?!?我不知道你能做到!我想知道MySQL在这种情况下认为
*
意味着什么。关于这一点没有太多的答案或其他评论。。。我重新设计了数据库,使其具有唯一的索引键,可以在两个表之间进行连接。解决了问题…@PrDP Hi。你的编辑删除一个标签真的没有任何区别&不应该被批准。此外,仅仅因为标签在技术上包含(一个或多个)其他标签的主题,就不适合添加标签;最好尽可能具体地标记。请通过使用“stackexchange”在Google上搜索,阅读有关在批准下编辑的信息(&B)。请作实质性编辑。
DELETE FROM responses
where (datetime, milisec) in 
(select (datetime, milisec) from requests where -- criteria)