以下代码片段:
select @total = count(*) from (...)
它做什么?它会返回一张桌子吗?
如果我这样做:
select * from (select @total = count(*) from (...))
为什么'='周围会出现语法错误?
答案 0 :(得分:1)
SELECT @total = COUNT(*) FROM ...
不会返回任何内容。它只是设置变量@total
的值。这就是为什么你不能将它用作子查询 - 因为它不返回结果集。
答案 1 :(得分:1)
SELECT @total = COUNT(*) FROM (...)
在您给出的示例(上方)中,SELECT
等同于SET
。它将@total
变量设置为计数查询的结果。
您可以使用SELECT
在单个语句中为多个变量赋值,而SET
一次只能执行1个。
例如,这个:
SELECT @Abc = 123, @Def = 456
等同于:
SET @Abc = 123
SET @Def = 456
Here是一篇非常好的文章,详细介绍了差异。