Это ваш запрос:
Select Max(CustomerID) AS MaxID
From TblCustomers
Это запрос агрегации.Запросы агрегации без group by
всегда возвращают одну строку - независимо от того, совпадают ли какие-либо строки.
Значение, возвращаемое в одной строке: NULL
для MaxId
.
Яочень подозрительно к тому, что вы хотите сделать.Если вам нужен максимальный идентификатор - и никаких строк, если таблица пуста - тогда выполните:
select c.CustomerID
from TblCustomers c
order by c.CustomerID desc
fetch first 1 row only;
(при этом используется стандартный синтаксис ANSI / ISO, поэтому точная логика может зависеть от вашей базы данных.)
Я подозреваю, что вы хотите использовать этот идентификатор для insert
- и это плохой подход.Почти все базы данных поддерживают какой-то столбец с автоинкрементом (с элементами синтаксиса, такими как auto_increment
, serial
или identity
).Это правильный способ присвоения уникального инкрементного идентификатора столбцу в таблице.