MySQL - проще всего выбрать последнюю вставленную строку - PullRequest
26 голосов
/ 05 мая 2010

Мне просто нужно выбрать последнюю введенную строку, указанную условием, например:

SELECT ID from bugs WHERE user=Me

Мне нужно вернуть только самый последний идентификатор, введенный пользователем «Я». Есть ли простой способ сделать это? Спасибо.

Ответы [ 8 ]

38 голосов
/ 05 мая 2010

Лучше всего иметь столбец TIMESTAMP со значением по умолчанию CURRENT_TIMESTAMP .. это единственное истинное прогнозирующее поведение, которое вы можете найти здесь.

Вторая лучшая вещь, которую вы можете сделать, - это ORDER BY ID DESC LIMIT 1, и вы надеетесь, что новейший идентификатор будет самым большим значением.

30 голосов
/ 05 мая 2010
SELECT MAX(ID) from bugs WHERE user=Me
29 голосов
/ 10 февраля 2014

Вы можете использовать ORDER BY ID DESC, но это ПУТЬ быстрее, если вы пойдете таким путем:

SELECT * FROM bugs WHERE ID = (SELECT MAX(ID) FROM bugs WHERE user = 'me')

Если у вас огромный стол, это может иметь существенное значение.

EDIT

Вы даже можете установить переменную, если она вам нужна более одного раза (или если вы считаете, что ее легче читать).

SELECT @bug_id := MAX(ID) FROM bugs WHERE user = 'me';
SELECT * FROM bugs WHERE ID = @bug_id;
13 голосов
/ 11 июня 2012

Один из способов сделать это - заказать записи и ограничить их до 1. Например, если у вас есть следующая таблица («данные»)

    id | user | price
   -------------------
    1  |  me  | 40.23
    2  |  me  | 10.23

Попробуйте следующий SQL-запрос

  select * from data where user='me' order by id desc limit 1
8 голосов
/ 05 мая 2010

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

Если это поле с автоматическим приращением, используйте SELECT LAST_INSERT_ID();, чтобы получить идентификатор, который вы только что создали.

3 голосов
/ 08 декабря 2016
SELECT * FROM `table_name` 
ORDER BY `table_name`.`column_name` DESC
LIMIT 1 
0 голосов
/ 12 января 2019

SELECT ID из ошибок, где пользователь = Me ORDER BY CREATED_STAMP DESC; BY CREATED_STAMP DESC извлекает те данные по индексу, который был создан первым.

Я надеюсь, что это решит вашу проблему

0 голосов
/ 13 июля 2018

Сразу после запуска запроса MySQL из php

получите по

$lastid=mysql_insert_id();

это даст вам значение идентификатора автоматического увеличения идентификатора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...