ВЫБЕРИТЕ последний идентификатор без ВСТАВКИ

Я пытаюсь получить идентификатор одной таблицы A для вставки в другую таблицу B. Я не могу использовать last_insert_id (), поскольку я ничего не вставил в A. Какие-либо идеи о том, как сделать это приятно?

$n = mysql_query("SELECT max(id) FROM tablename"); кажется, не работает, ни делает

$n = mysql_query("SELECT max(id) FROM tablename GROUP BY id");
7
задан Illes Peter 28 June 2010 в 15:24
поделиться

3 ответа

В MySQL это действительно возвращает максимальное значение из столбца id :

SELECT MAX(id) FROM tablename;

Однако это не помещает этот идентификатор в $ n :

$n = mysql_query("SELECT max(id) FROM tablename");

Чтобы получить значение, вам нужно сделать следующее:

$result = mysql_query("SELECT max(id) FROM tablename");

if (!$result) {
    die('Could not query:' . mysql_error());
}

$id = mysql_result($result, 0, 'id');

Если вы хотите получить последний идентификатор вставки из A и вставить его в B, вы можете сделать это с помощью одной команды:

INSERT INTO B (col) SELECT MAX(id) FROM A;
29
ответ дан 6 December 2019 в 05:42
поделиться

Я думаю добавить метку времени к каждой записи и получить самую последнюю. В этой ситуации вы можете получить любые идентификаторы, строки пакетов и другие операции.

0
ответ дан 6 December 2019 в 05:42
поделиться

Вы можете получить максимальное значение столбца и увеличить его:

InnoDB использует следующий алгоритм для инициализации счетчика автоинкремента для таблицы t, которая содержит AUTO_INCREMENT столбец с именем ai_col: После запуска сервера, для первой вставки в таблицу t, InnoDB выполняет эквивалент этого оператора:

SELECT MAX(ai_col) FROM t FOR UPDATE;

InnoDB увеличивает на единицу значение полученное этим оператором, и присваивает его столбцу и счетчику автоинкремента для таблицы. Если таблица пуста, InnoDB использует значение значение 1.

Также вы можете использовать SHOW TABLE STATUS и его значение "Auto_increment".

0
ответ дан 6 December 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: