Подтвердить что ты не робот

Выберите все записи, используя MySQL LIMIT и OFFSET запрос

Я ищу способ выполнить:

SELECT * FROM table

но используя LIMIT и OFFSET следующим образом:

SELECT * FROM table LIMIT all OFFSET 0

Есть ли способ написать инструкцию SQL с использованием LIMIT и OFFSET, но все равно получить ВСЕ результат?
(Конечно, я могу использовать оператор IF, но я скорее избегаю его, если это возможно)

Любая помощь будет оценена!

4b9b3361

Ответ 1

Из Документация по MySQL:

Чтобы получить все строки с определенного смещения до конца результата set, вы можете использовать некоторое большое количество для второго параметра. Эта оператор извлекает все строки из 96-й строки до последней:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

Таким образом, получение всех строк может выглядеть следующим образом:

SELECT * FROM tbl LIMIT 0,18446744073709551615;

Ответ 2

Это может быть не лучший способ сделать это, но это первое, что приходит на ум...

SELECT * FROM myTable LIMIT 0,1000000

Замените 1000000 с некоторым достаточно большим количеством, которое, как вы знаете, всегда будет больше, чем общее количество записей в таблице.

Ответ 3

Я использовал этот код в nodeJS с MySQL, и он работает хорошо, он может вам помочь. Почему вы его используете?

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

    var noOfGroupShow=0;  //0: all, rest according to number   
    if (noOfGroupShow == 0) {
        noOfGroupShow = '';
    } 
    else {
        noOfGroupShow = ' LIMIT 0, '+noOfGroupShow;
    }
    var sqlGetUser = "SELECT `user_name`,`first_name`,`last_name`,`image`,`latitude`, `longitude`,`phone`,`gender`,`country`,`status_message`,`dob` as user_date_of_birth FROM `tb_user` WHERE `user_id`=?"+noOfGroupShow;
    

Ответ 4

Возможно, не самое чистое решение, но установка предела на очень высокое число может работать. Смещение должно быть 0.

Почему бы не использовать оператор IF, где вы добавляете ограничение и смещение к запросу, поскольку утверждение истинно?

Ответ 5

По мере роста записи используйте mysql_num_rows для динамического поиска общего количества записей вместо использования some large number.

$cektotalrec=mysql_query("SELECT * FROM TABLE");
$numoffset=mysql_num_rows($cektotalrec); 
$numlimit="0";

то

$final="SELECT * FROM table ".$numlimit.", ".$numoffset"";

Ответ 6

  • Вы можете получить сообщение об ошибке, если вы установите ограничение на очень большое число, как определено в mysql doc. В этом случае вы должны попытаться ограничить его 9999999999999, идя выше, может дать вам ошибку, если вы не настроите сервер выше.

  • Вы можете использовать LIMIT в функции, поэтому это неплохая идея. Если вы используете его в функции, вы можете захотеть, чтобы это было Limit All в одной точке и ограничение 1 в другой точке.

  • Ниже приведен список примеров, в которых вы, возможно, хотите, чтобы ваше приложение не имело ограничений.

function get_navigation ($ select = "*", $from = "pages", $visible = 1, $subject_id = 2, $order_by = "position", $sort_by = "asc", $offset = 0, $limit = 9551615) {   глобальное соединение $

$query = " SELECT {$select} ";
$query .= " FROM {$from}  ";

$query .= " WHERE visible = {$visible} ";
$query .= " AND subject_id = {$subject_id} ";

$query .= " ORDER BY {$order_by}  {$sort_by} ";
$query .= " LIMIT {$offset}, {$limit} ";

mysqli_query($connection, $query);
$navigation_set = mysqli_query($connection, $query);
confirm_query($navigation_set);
return $navigation_set;


}

define ("SELECT", "*");
define ("FROM", "pages");
define ("VISIBLE", 1);
define ("SUBJECT_ID", 3);
define ("ORDER_BY", "position");
define ("SORT_BY", "ASC");
define ("LIMIT", "0");


$navigation_set = get_navigation(SELECT, FROM, VISIBLE, SUBJECT_ID, ORDER_BY, SORT_BY);