PHP & Mysqli - несколько запросов в одном? - PullRequest
0 голосов
/ 09 ноября 2010

Мне нужно получить идентификатор (столбец) из последней вставленной строки в таблице.Мне интересно, есть ли способ как-то встроить это в другой запрос, чтобы избежать двух разных запросов?Кажется, все гораздо проще, и я думаю, что видел это где-то раньше.

Примерно так:

$query = "INSERT INTO a_table (x, y) VALUES ((SELECT id FROM another_table ORDER BY id DESC), 'y...')";

Есть идеи, как это сделать?Спасибо.

Ответы [ 3 ]

1 голос
/ 09 ноября 2010
INSERT INTO a_table (x, y) VALUES (SELECT max(id), 'y...' FROM another_table);
1 голос
/ 09 ноября 2010

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

mySQL LAST_INSERT_ID() вернет последний идентификатор, созданный для этого конкретного соединения. Однако вы должны вызвать его сразу после оператора вставки.

Если получение наивысшего идентификатора буквально того, что вы хотите, ответ GSto сработает для вас.

0 голосов
/ 09 ноября 2010

Да, в MySQL есть оператор INSERT .. SELECT:

пример:

INSERT INTO a_table (x, y) SELECT id, 'y' ИЗ другой_таблицы ORDER BY id IDC

хотя имейте в виду, что если у вас нет поля идентификатора auto_incrementing, то здесь порядок по пунктам не имеет смысла.

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