在mysql和h2中使用相同的语法加入删除

时间:2016-03-30 15:29:06

标签: mysql h2 rdbms

我在mysql中有一个生产数据库,并在H2中进行一些Junit测试 我正在努力寻找一种既能用于测试又能用于删除2个表中记录的语法 SQL查询使用

发送到数据库
jdbctemplate.update(sqlQuery, queryArgs);

到目前为止,我发现查询可以在mysql上运行但不在H2上运行,反之亦然。

我有2个表:请求和响应在共同的datetime和milisec中有2列。这对夫妇(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)

DELETE FROM responses
where (datetime, milisec) in 
(select (datetime, milisec) from requests where -- criteria)

0 个答案:

没有答案