【发布时间】:2011-03-22 22:10:44
【问题描述】:
我想在我的 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 中却不行。它在“;”处抛出一个带有语法错误的异常分隔语句。我喜欢这个变量,因为我不必重复查找子句,但如有必要我可以重写它。等效的 JOIN 与 UNION 子句也有点尴尬。
谢谢,
约书亚
【问题讨论】:
-
正如@ddimitrov 所说,这似乎直接不可能。我没有尝试
PreparedStatement.addBatch()。存储过程也可能适用于此。 -
如果您对其他供应商感兴趣,那么 CUBRID 数据库支持此功能。请参阅此论坛帖子cubrid.org/forum/534638。