Как указать ограничение и смещение в SQL

#java #sql

#java #sql

Вопрос:

Я работаю на Java. У меня есть одна таблица, в которой 100 строк и 2 столбца. Рассмотрим следующий запрос:-

 String id, lastId; 
ArrayList list=new ArrayList();
String query="select id from user limit 0,9";
selectStatement.execute(query);
ResultSet rs=selectStatement.getResultSet();
while(rs.next()){
    id=rs.getString(1);
    list.add(id);
}
  

Как и выше, я указал ограничение в 10. Но я хочу получить все 100 строк.Итак, пожалуйста, скажите мне, как начать с 10-й строки после перебора 9 строк.Нужно ли устанавливать id в lastID.Пожалуйста, дайте мне какой-нибудь простой код.

Комментарии:

1. Вы используете MySQL , верно?

Ответ №1:

Вы указали предел 9 , а не 10 .

Для извлечения записей с 11-го по 20-е используйте:

 SELECT  id
FROM    user
ORDER BY
        id
LIMIT 10, 10
  

затем

 SELECT  id
FROM    user
ORDER BY
        id
LIMIT 20, 10
  

и так далее.

Обратите внимание, что вы должны указать ORDER BY , чтобы порядок ваших записей был согласованным.

Ответ №2:

Похоже, вы пытаетесь реализовать подкачку. Вы смотрели на поддержку подкачки, доступную в CachedRowSet? (Смотрите раздел 10, Данные подкачки).

Этот пример кода взят из этого javadoc:

 CachedRowSet crs = CachedRowSetImpl();
 crs.setPageSize(100);
 crs.execute(conHandle);

 while(crs.next() {
 . . . // operate on first chunk of 100 rows in crs, row by row
 }

 while(crs.nextPage()) {
     while(crs.next()) {
         . . . // operate on the subsequent chunks (of 100 rows each) in crs, 
               // row by row
     }
 }
  

Ответ №3:

Сначала получите количество строк из MySQL

 String query = "SELECT COUNT(*) FROM user";
int count;
selectStatement.execute(query); 
ResultSet rs=selectStatement.getResultSet(); 
while(rs.next()){     
count=rs.getInt(1);     
}
  

Затем выполните итерацию по циклу.

 String id, int counter =1;
ArrayList list=new ArrayList(); 

for(int i=1; i< count/10;i  )
{
    query="select id from user limit "   i-1  ", "   (i *10)-1 ; 
    selectStatement.execute(query); 
    ResultSet rs=selectStatement.getResultSet(); 
    while(rs.next()){     
        id=rs.getString(1);     
        list.add(id); 
    }
 }
  

Поскольку ваш код написан на Java, может возникнуть синтаксическая ошибка. Пожалуйста, исправьте их 🙂

Ответ №4:

  String query="select id from user limit 0,9";

 String query="select id from user limit"   start   ","   end;
  

Здесь вы жестко запрограммировали смещение,limit. Вместо этого используйте такие переменные, как start, end, data_limit (10 в соответствии с примером). ‘start’ должен быть начальным индексом. ‘end’ должно быть (‘start’ data_limit).