MySQL выбрать последние два вставленных идентификатора

0

Как выбрать два последних вставленных идентификатора?

Здесь я объясню, как я могу их использовать. Это мой запрос:

INSERT INTO Table1 (FIELD1, FIELD2, FK_TABLE2, FIELD6) 
(SELECT FIELD1, FIELD2
,(SELECT MAX(PK_Table2)
    FROM Table2
    )
,(FIELD4 + FIELD5) FROM Table1 WHERE FIELD3 = (
    (SELECT MAX(PK_Table2)
        FROM Table2) - 1
    ))

Это должно почти дублировать все записи, связанные с последней, но одной записью таблицы2, для последней записи таблицы2.

Это работает прямо сейчас, но только потому, что я еще не удалял запись.

Если я удалю последнюю запись из таблицы2 и вставляю другую, мой генератор будет генерировать новый ПК, который не является последним + 1.

например: Последние два идентификатора: 18 -1 9. я Удалите 19 и вставьте еще один. Теперь два последних идентификатора - 18-20.
Таким образом, Max(PK_Table2) будет равен 20, а Max(PK_Table2)-1 будет равен 19, но мне нужно 18.

Теги:

1 ответ

2
Лучший ответ

Вам необходимо выполнить следующие действия:

  1. Получить максимальный идентификатор
  2. Получите максимальный ID меньше, чем

Это было бы:

WHERE FIELD3 = 
(
  SELECT MAX(PK_Table2) FROM Table2
  WHERE PK_Table2 < (SELECT MAX(PK_Table2) FROM Table2)
)

Еще один вопрос: возьмите последние два, а затем получите второй последний.

WHERE FIELD3 = 
(
  SELECT PK_Table2
  FROM (SELECT PK_Table2 FROM Table2 ORDER BY PK_Table2 DESC LIMIT 2) x
  ORDER BY PK_Table2 LIMIT 1
)
  • 0
    Красиво и просто! Не знаю, почему я не думал об этом .. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню