Как делание SELECT Top 1 в MySQL для последнего реестра

Хорошие, который в SQL Server осуществляется один query как этот, чтобы брать ПОСЛЕДНИЙ реестр НЕ ПЕРВЫЙ

SELECT TOP 1 *
FROM Tabla
ORDER by ID DESC

Так меня берет последний реестр таблицы костлявого MSSQL SQL server 2008 R2, но в MySQL разместите этот и меня берет первый реестр: Что я должен делать, или что я врежу? Прочитайте начало, так как они проголосовали мне за негатив, исследовав немного больше

SELECT *
FROM Tabla
ORDER by ID DESC
LIMIT 1

ОСТАВЛЯЯ в Просвете, который acado понимания этого, и я это понял, сделав этот Post, что эквивалент одному

TOP 1 

SQL server он

MIN(exprecion)

и последний реестр

MAX(exprecion)

просвет эта с Вашим условием.

6
задан 02.01.2017, 03:01
0 ответов

Не является ясным, что ты повредил. Потому что 2 решения - точно эквиваленты и функционируют верно хорошо.


TOP 1 в SQL Server:

create table tbl (
  id int not null primary key,
  texto varchar(50) not null
);

insert into tbl (id, texto) values (1, 'aaa');
insert into tbl (id, texto) values (5, 'eee');
insert into tbl (id, texto) values (2, 'bbb');
insert into tbl (id, texto) values (4, 'ddd');
insert into tbl (id, texto) values (3, 'ccc');

select top 1 *
  from tbl
 order by id desc;

Результат:

id   texto
--   -----
5    eee

Demo


LIMIT 1 с MySQL

create table tbl (
  id int not null primary key,
  texto varchar(50) not null
);

insert into tbl (id, texto) values (1, 'aaa');
insert into tbl (id, texto) values (5, 'eee');
insert into tbl (id, texto) values (2, 'bbb');
insert into tbl (id, texto) values (4, 'ddd');
insert into tbl (id, texto) values (3, 'ccc');

select *
  from tbl
 order by id desc
 limit 1;

Результат:

id   texto
--   -----
5    eee

Demo


Поскольку ты можешь видеть, обе консультации функционируют хорошо и возвращают тот же результат.

С другой стороны, консультация, что pusistes как ответ на твой вопрос:

SELECT MAX(id) *
FROM Tabla

... он является действительным абсолютно, даже ни прокручивает изображение в окне, как возможно наблюдать здесь: Demo

Возможно quisistes говорить:

SELECT MAX(t.id), t.*
FROM Tabla t

... но хотя, по крайней мере, он сейчас прокручивает изображение в окне, эта консультация может давать тебе полностью ошибочные результаты, как ты можешь наблюдать в следующем demo:

create table tbl (
  id int not null primary key,
  texto varchar(50) not null
);

insert into tbl (id, texto) values (1, 'aaa');
insert into tbl (id, texto) values (5, 'eee');
insert into tbl (id, texto) values (2, 'bbb');
insert into tbl (id, texto) values (4, 'ddd');
insert into tbl (id, texto) values (3, 'ccc');

select max(t.id), t.*
  from tbl t;

Результат:

max(t.id)  id   texto
---------  --   -----
5          1    aaa

Demo

7
ответ дан 03.12.2019, 17:54
  • 1
    Дружелюбная ошибка Ваш результат ошибочный ¿ он не был бы должен показывать самую высокую идентификацию только? а именно так cmo он был бы сделан в MSSQL; SELECT TOP 1 FROM Table WHERE Пользователь = @User ORDER By идентификация DESC Ваш результат должен бы быть идентификацией = 5 и текст ЕЭЗ следовательно Ваша консультация ошибочная она одинокий показывает первый результат больше НЕ последний Спасибо за то, чтобы быть таким любезным –  02.01.2017, 02:40
  • 2
    ¿ Которой консультации está s говоря? Я верю, чем со ссылками, в то что dejé está больше, чем просвет, что LIMIT 1 функционирует формы idé ntica в TOP 1 в MSSQL. –  02.01.2017, 02:48

Как я вижу, ты берешь нисходящий порядок и это взяло бы тебе последний вошедший реестр, имея в виду, что id - автомобиль incrementable. query остался бы что-то как это:

SELECT * FROM Tabla ORDER by ID ASC LIMIT 1

Это принесло бы тебе самый старый реестр. Но имей в виду, как растет поле идентификация

0
ответ дан 03.12.2019, 17:54