給錯誤以下是兩個腳本簡單的SELECT腳本在SQL服務器
select *
select count(*)
1給出了一個錯誤,但第二個一個不給錯誤。
下面是由SQL Server
消息263,級別16,狀態1,行 給出必須指定表從選擇錯誤。
你能說出原因嗎?
注意:沒有指定表名。
在此先感謝。
給錯誤以下是兩個腳本簡單的SELECT腳本在SQL服務器
select *
select count(*)
1給出了一個錯誤,但第二個一個不給錯誤。
下面是由SQL Server
消息263,級別16,狀態1,行 給出必須指定表從選擇錯誤。
你能說出原因嗎?
注意:沒有指定表名。
在此先感謝。
原因select count(*)
的作品,是因爲它默認爲master
數據庫
AS在其他的答案說你有指定一個表名。
+1爲更合適的解釋填充答案 – asprin 2013-03-26 06:26:25
SELECT *
不是一個完整的查詢
應該
SELECT * from MyTableName
在1 st查詢,要使其完成,您需要定義from
子句。
SELECT * FROM <Table_Name>
在2 第二查詢,如果不指定表以供選擇,一個選擇將只返回一行 - 因此COUNT(*)將返回1
FROM
子句是可選的,它一直以這種方式工作。所以你可以做"SELECT 1"
或"SELECT @val"
等等,不需要一張表。
在其他數據庫系統中,有一個名爲"DUAL"
與用來做這樣的SELECT語句像"SELECT 1 FROM dual;"
select count(*)
作品,因爲count
是一個函數,返回一個標值一列一個虛表,因爲from
子句可選,它將成功執行,而*
既不是一個函數也不是標量值,這就是爲什麼它無法執行。
[ 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語句的順序是顯著。任何一個可選的子句都可以省略,但是當使用可選的子句時,它們必須以適當的順序出現
所以選擇後跟任何標量值將執行i。e選擇1,選擇'*'
http://stackoverflow.com/questions/8398772/select-count – bummi 2013-03-26 06:31:10