我想在MySQL服务器上执行类似的操作:
SET @id=(SELECT id FROM lookupTable WHERE field=?);
(SELECT * FROM table2 WHERE id=@id)
UNION
(SELECT * FROM table3 WHERE id=@id)
UNION
(SELECT * FROM table4 WHERE id=@id);
这可以在控制台上正常工作,但不能从我的Java PreparedStatement中工作。它会在';'处引发语法错误的异常分开陈述。我喜欢变量因为我不必重复查找子句,但如果有必要我可以重写它。对于UNION条款,等效的JOIN也有点尴尬。
谢谢,
约书亚
答案 0 :(得分:5)
JDBC从未支持解析分隔查询。每次调用都是一次数据库之旅。也许你可以实现你为每个单独的查询做PreparedStatement.addBatch()的意思,然后执行和检索两个结果集?
答案 1 :(得分:2)
只需将两个单独的查询(在一个连接中)运行就可以得到相同的结果。