Я хотел бы выполнить что-то вроде этого на своем сервере 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. Это выдает исключение с синтаксической ошибкой в''; разделение операторов. Мне нравится переменная, потому что я не должен повторять пункт поиска, но я мог переписать его при необходимости. Эквивалентное СОЕДИНЕНИЕ является немного неловким с пунктами ОБЪЕДИНЕНИЯ также.
Спасибо,
Joshua
JDBC никогда не поддерживал синтаксический анализ запросов с разделителями. Каждый вызов - это одно обращение к базе данных. Возможно, вам удастся добиться того, что вы имели в виду, выполняя PreparedStatement.addBatch () для каждого отдельного запроса, а затем выполняя и получая два набора результатов?
Просто запустив это как два отдельных запроса (в рамках одного соединения), вы получите те же результаты.