Как использовать функцию SQL RANDOM() в NetBeans JavaDB

Мне нужно сделать вызов SQL в небольшой локальной JavaDB в Netbeans 7.2, чтобы извлечь одну случайную строку из базы данных.

SELECT * FROM JAVA2.FORTUNES ORDER BY RANDOM()

До сих пор у меня это работало с использованием функции RANDOM(), но у меня проблемы с тем, чтобы заставить LIMIT 1 работать, он возвращает синтаксическую ошибку.

Я знаю, что в каждой базе данных есть разные способы сделать это, и я не могу понять, как она работает специально для этой JavaDB в Netbeans (я заставил ее работать в отдельной базе данных Oracle с другим синтаксисом).

Существует ли специфический для Java DB или ANSII стандартный способ возврата одной строки с использованием приведенного выше синтаксиса?

2 ответа

Решение

Java DB использует синтаксис SQL OFFSET/FETCH для получения этой функциональности.

Предполагая, что RANDOM() упорядочивает их правильно, должен работать следующий синтаксис:

SELECT * FROM JAVA2.FORTUNES ORDER BY RANDOM() OFFSET 0 ROWS FETCH NEXT 1 ROW ONLY

От http://db.apache.org/derby/faq.html

Дерби не поддерживает синтаксис LIMIT. Однако в Derby 10.4 добавлена ​​функция ROW_NUMBER, а в Derby 10.7 добавлены предложения OFFSET и FETCH.

Derby также поддерживает ограничение количества строк, возвращаемых запросом через JDBC. Например, чтобы получить первые 5 строк большой таблицы:

Statement stmt = con.createStatement();  
stmt.setMaxRows(5); 
ResultSet rs = stmt.executeQuery("SELECT * FROM myLargeTable");
Другие вопросы по тегам