Мне нужен самый высокий ID из базы данных. Я делаю это правильно? - PullRequest
0 голосов
/ 02 марта 2009
    set qv = createobject("adodb.recordset")
q ="select * from tbl order by ID"
qv.open q,QuoteConn,3,1,1
    qv.movelast
    qid=qv("ID")
qv.close

EDIT:

аууу, ты все убил шутку. В 2009 году я поддерживаю этот кусок кода ...

Ответы [ 6 ]

6 голосов
/ 02 марта 2009

что насчет MAX (id)?

4 голосов
/ 02 марта 2009

Да, но самым медленным способом.

Более того, ваша предпосылка неверна. Вы не должны получить самый высокий ID из базы данных.

Мои умственные способности отладки говорят мне, что вы собираетесь использовать это для создания нового идентификатора и вставки этого идентификатора обратно в базу данных с новой записью. Это совершенно неправильный способ, и это приведет к гонкам в этом коде на вашем веб-сайте. Вместо этого установите свой идентификатор в качестве столбца Identity и позвольте Sql Server автоматически создавать ваши идентификаторы. Затем выберите новый идентификатор обратно в ваши результаты после вставки, используя функцию scope_identity() Sql Server.

Даже если я ошибаюсь, и вы просто хотите использовать его для получения самой последней записи, скорее всего, вам действительно нужно что-то вроде scope_identity() (если вы только что создали новую запись как часть того же сеанса) или ident_current(tbl) (если новая запись, возможно, была создана кем-то другим или создана некоторое время назад). И в этом последнем случае у вас действительно должен быть какой-то другой способ, кроме идентификатора, чтобы определить, что является «самым последним».

2 голосов
/ 02 марта 2009

Более быстрый путь будет

q = "выбрать максимум (ID) из таблицы"

Это всегда приведет к одной строке с одним значением (с наибольшим идентификатором).

0 голосов
/ 02 марта 2009

Другие ответы верны, я бы просто предложил вам дать ему псевдоним, чтобы вы могли получить к нему доступ:

select max(ID) as "maxID" from tbl
...
qid = qv("maxID")
0 голосов
/ 02 марта 2009

Я не знаю вашего конкретного вида SQL, но во многих вы можете сделать это как:

q = "выбрать * из таблицы, где ID = (выбрать максимальную (b.ID) из таблицы b)"

0 голосов
/ 02 марта 2009

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

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