Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 select @var = column from table - какая запись будет получена?  [new]
ask_question
Guest
При выполнении следующего скрипта, как SQL Server определяет, какая запись будет получена (и, соответственно, какое значение будет в @var)?

create table tmp_table (
col int
)

insert into tmp_table values (1)
insert into tmp_table values (2)
insert into tmp_table values (3)
insert into tmp_table values (4)
insert into tmp_table values (5)

declare @var int
select @var = col from tmp_table
print @var

drop table tmp_table

В данном примере на SQL2000 у меня получается 5, т.е. последняя добавленная запись. Но при работе с реальными таблицами, возвращается произвольное, на первый взгляд, значение. Как определяется запись и можно ли считать подобный запрос корректным? Спасибо.
13 ноя 09, 11:22    [7924553]     Ответить | Цитировать Сообщить модератору
 Re: select @var = column from table - какая запись будет получена?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
значение будет произвольное.
корректен ли вопрос зависит от того, что вам от него нужно...
--------------------------------------------------------------
Дьявол кроется в деталях.
13 ноя 09, 11:24    [7924576]     Ответить | Цитировать Сообщить модератору
 Re: select @var = column from table - какая запись будет получена?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
BOL
If the SELECT statement returns more than one value, the variable is assigned the last value that is returned.
13 ноя 09, 11:30    [7924628]     Ответить | Цитировать Сообщить модератору
 Re: select @var = column from table - какая запись будет получена?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31170
ask_question
В данном примере на SQL2000 у меня получается 5, т.е. последняя добавленная запись. Но при работе с реальными таблицами, возвращается произвольное, на первый взгляд, значение. Как определяется запись и можно ли считать подобный запрос корректным? Спасибо.
Последняя запись из возвращённых, но возвращаются записи в произвольном порядке.

Поэтому правильный ответ - произвольная.

Чтобы точно указать запись, нужно указать сортировку.
13 ноя 09, 16:37    [7927340]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить