|
|
|
SSC Eights!
      
Group: General Forum Members
Last Login: 2 days ago @ 2:18 AM
Points: 932,
Visits: 229
|
|
|
|
|
|
Ten Centuries
      
Group: General Forum Members
Last Login: Thursday, January 24, 2013 9:59 PM
Points: 1,354,
Visits: 1,299
|
|
I almost selected the option that said there would be an error on the first select because the query should return more than one value.
select @a = iValue from @vals where iKey = iValue order by iKey
After thinking about it and before submitting my answer, I realized it would work but pick the last item and assign it to @a.
This one almost got me.
|
|
|
|
|
Ten Centuries
      
Group: General Forum Members
Last Login: Yesterday @ 2:05 AM
Points: 1,103,
Visits: 1,200
|
|
 I know very well how this assignments work. So it was just my great answering problem: Don't miss the right radio button.
See, understand, learn, try, use efficient © Dr.Plch
|
|
|
|
|
SSCommitted
      
Group: General Forum Members
Last Login: Yesterday @ 12:56 AM
Points: 1,972,
Visits: 1,822
|
|
WARN: If you use an aggregate function @a will be updated also if no row is returned SET NOCOUNT ON declare @vals table (iKey int, iValue int) insert into @vals (iKey, iValue) select 1,1 union select 2,2 union select 3,3 declare @a int set @a = 5 select @a = iValue from @vals where iKey = iValue order by iKey select @a select @a = iValue from @vals where iKey <> iValue select @a select @a = COUNT(*) from @vals where iKey <> iValue select @a
|
|
|
|
|
Ten Centuries
      
Group: General Forum Members
Last Login: Thursday, January 24, 2013 9:59 PM
Points: 1,354,
Visits: 1,299
|
|
Carlo Romagnano (11/25/2009) WARN: If you use an aggregate function @a will be updated also if no row is returned SET NOCOUNT ON declare @vals table (iKey int, iValue int) insert into @vals (iKey, iValue) select 1,1 union select 2,2 union select 3,3 declare @a int set @a = 5 select @a = iValue from @vals where iKey = iValue order by iKey select @a select @a = iValue from @vals where iKey <> iValue select @a select @a = COUNT(*) from @vals where iKey <> iValue select @a
Wouldn't you always get a row returned with the COUNT(*) aggregate? It might return 0 as the result but that still returns a row.
|
|
|
|
|
SSCommitted
      
Group: General Forum Members
Last Login: Yesterday @ 12:56 AM
Points: 1,972,
Visits: 1,822
|
|
Wouldn't you always get a row returned with the COUNT(*) aggregate? It might return 0 as the result but that still returns a row.
That's true!
|
|
|
|
|
SSC Eights!
      
Group: General Forum Members
Last Login: 2 days ago @ 2:18 AM
Points: 932,
Visits: 229
|
|
cengland0 (11/25/2009) Wouldn't you always get a row returned with the COUNT(*) aggregate? It might return 0 as the result but that still returns a row. Indeed - if you slot an aggregate that returns NULL into the query around the 'iValue' in the final COALESCE, you actually get zero, as the MAX aggregate (to take an example at random) actually returns a row with NULL in.
Interesting observation. 
-- Kev
------------------------------- Oh no!
|
|
|
|
|
SSC Eights!
      
Group: General Forum Members
Last Login: Friday, February 04, 2011 7:20 AM
Points: 977,
Visits: 1,499
|
|
The 2nd SELECT has no ORDER BY clause, and the table variable has no index. How do you know what the last row will contain?
Tom Garth Vertical Solutions
"There are three kinds of men. The one that learns by reading. The few who learn by observation. The rest of them have to pee on the electric fence for themselves." -- Will Rogers
|
|
|
|
|
SSChasing Mays
      
Group: General Forum Members
Last Login: Friday, May 17, 2013 3:07 PM
Points: 648,
Visits: 1,050
|
|
Tom Garth (11/25/2009)
The 2nd SELECT has no ORDER BY clause, and the table variable has no index. How do you know what the last row will contain? 
The second query returns null so the variable isn't modified from the first query.
|
|
|
|
|
Ten Centuries
      
Group: General Forum Members
Last Login: Yesterday @ 2:05 AM
Points: 1,103,
Visits: 1,200
|
|
gary.rumble (11/25/2009)
Tom Garth (11/25/2009)
The 2nd SELECT has no ORDER BY clause, and the table variable has no index. How do you know what the last row will contain?  The second query returns null so the variable isn't modified from the first query. I hope it was a joke (see emoticon)
See, understand, learn, try, use efficient © Dr.Plch
|
|
|
|