2016-12-15 3 views
-2

я выполнять два запроса в Mysql с "предел":MySQL "предел" возвращает неправильный результат

запроса одного:

SELECT * FROM staff s, department d WHERE s.departId = d.id AND s.statusid = 1 LIMIT 10; 

результат один: enter image description here

запроса два:

SELECT * FROM staff s, department d WHERE s.departId = d.id AND s.statusid = 1 LIMIT 1; 

результат 2: enter image description here

Вопрос:

Интересно, почему второй запрос не возвращает запись ид = 100000 вместо ид = 100001; Спасибо, что ответили заранее.

+1

нет абсолютно никакого кода для поддержки этого вопроса. Все, что есть здесь, это скриншот. –

+2

и ваша запись о приеме не велика ни –

+1

добавить 'порядок по S.ID asc', и это будет – xQbert

ответ

5

Да, это потому, что вы не указали какой-либо пункт order by, и, следовательно, порядок возвращенных данных не гарантируется. Если вам нужен конкретный заказ на полученных данных, то же указать, что использование order by пункт как

order by s.departId desc 
+0

Спасибо за то, что я не знал. – SaiLiu

+1

@SaiLiu, вы видели, что прокомментировал Fred-ii. не просто сказать спасибо, а принять ответ, чтобы выразить свою признательность. не должен быть моим ответом, но любой, кого вы считаете, больше всего помог вам с проблемой. – Rahul

+1

@SaiLiu, см. [Как принимается ответ?] (Https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Chris

3

Ни один из запросов определяет порядок, а это означает, что база данных бесплатно, чтобы заказать данные, однако он хочет завершить запрос , Если вы хотите отсортировать по id колонку добавить ORDER BY s.id ASC на ваши вопросы:

SELECT * FROM staff s, department d WHERE ... ORDER BY s.id ASC LIMIT 10; 

SELECT * FROM staff s, department d WHERE ... ORDER BY s.id ASC LIMIT 1; 
0

использует order by id пункт, если вы хотите, чтобы вернуть данные на основе идентификатора в порядке возрастания использования order by id desc если в нисходящем

Смежные вопросы