Я пытаюсь получить идентификатор одной таблицы 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");
В 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;
Я думаю добавить метку времени к каждой записи и получить самую последнюю. В этой ситуации вы можете получить любые идентификаторы, строки пакетов и другие операции.
Вы можете получить максимальное значение столбца и увеличить его:
InnoDB использует следующий алгоритм для инициализации счетчика автоинкремента для таблицы t, которая содержит AUTO_INCREMENT столбец с именем ai_col: После запуска сервера, для первой вставки в таблицу t, InnoDB выполняет эквивалент этого оператора:
SELECT MAX(ai_col) FROM t FOR UPDATE;
InnoDB увеличивает на единицу значение полученное этим оператором, и присваивает его столбцу и счетчику автоинкремента для таблицы. Если таблица пуста, InnoDB использует значение значение 1.
Также вы можете использовать SHOW TABLE STATUS и его значение "Auto_increment".