Tsql не может обновить столбец с помощью оператора count - PullRequest
1 голос
/ 29 апреля 2010
declare @t1 Table
(
a1 int
)

insert into @t1 
select top 10 AnimalID from Animal 

--select * from @t1 

declare @t2 table
(
dogs int null
)

update @t2
set dogs = (Select COUNT(*) from @t1)

---------> Результат, который он мне дает, это просто 0

Ответы [ 4 ]

3 голосов
/ 29 апреля 2010

ну, во-первых, вы не можете обновить какие-либо записи в @ t2, потому что у вас нет записей для обновления. Вам нужно сделать еще одну вставку. Предполагая, что у вас есть записи, вам нужен способ связать подзапрос с записью, которую нужно обновить, но которой у вас нет.

1 голос
/ 29 апреля 2010

Это потому, что вы никогда не вставляете в @ t2, поэтому в вашем обновлении нет записей для обновления.

1 голос
/ 29 апреля 2010

Попробуйте использовать оператор вставки вместо обновления («обновить» - изменить уже существующую запись; «вставить» - ввести новую) -

INSERT INTO @t2 SELECT COUNT(*) FROM @t1

И почему вообще должен быть какой-либо вывод из этого кода? Я не вижу каких-либо операторов выбора или печати. ​​

(Что именно вы пытаетесь достичь?)

0 голосов
/ 29 апреля 2010

Это потому, что вы создаете и обновляете свою таблицу, но она пуста.

Изменить

update @t2 set dogs = (Select COUNT(*) from @t1)

Для

declare @c int

select @c = COUNT(*) from @t1

insert into @t2 (dogs) values (@c)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...