简单的SELECT脚本在Sql Server中给出错误

时间:2013-03-26 06:21:03

标签: sql-server

以下是两个脚本

  1. select *
  2. select count(*)
  3. 第一个出错,但第二个出错。

    以下是sql server

    给出的错误
      

    Msg 263,Level 16,State 1,Line 1       必须指定要选择的表。

    你能说出原因吗?

    注意:未指定表格名称。

    提前致谢。

4 个答案:

答案 0 :(得分:5)

select count(*)的工作原因是因为它默认为master数据库

如其他答案中所述,您必须指定一个表名。

答案 1 :(得分:1)

SELECT *不是完整的查询

应该是

SELECT * from MyTableName

答案 2 :(得分:1)

select count(*)有效,因为count是一个函数并返回标量值,因为from子句是可选的,它将成功执行,而*既不是函数也不是标量值这就是它无法执行的原因。

来自SELECT

    [ WITH <common_table_expression>]
SELECT select_list [ INTO new_table ]
[ FROM table_source ] [ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]

SELECT语句中子句的顺序很重要。可以省略任何一个可选子句,但是当使用可选子句时,它们必须以适当的顺序出现

所以选择后跟任何标量值将执行,即选择1,选择'*'

答案 3 :(得分:0)

在1 st 查询中,为了使其完整,您需要定义from子句。

SELECT * FROM <Table_Name>

在2 nd 查询中,如果未指定要选择的表,则单个选择将仅返回单行 - 因此count(*)将返回1。

FROM子句是可选的,它始终以这种方式工作。因此,您可以执行"SELECT 1""SELECT @val"等操作,而无需使用表格。

在其他数据库系统中,有一个名为"DUAL"的虚拟表,其中一行用于执行"SELECT 1 FROM dual;"

之类的SELECT语句