SQL中的SELECT语法

时间:2014-02-26 22:19:17

标签: sql sql-server

以下代码片段:

select @total = count(*) from (...)

它做什么?它会返回一张桌子吗?

如果我这样做:

select * from (select @total = count(*) from (...))

为什么'='周围会出现语法错误?

2 个答案:

答案 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是一篇非常好的文章,详细介绍了差异。