1

以下は2つのスクリプトです

  1. select *
  2. select count(*)

1つ目はエラーになりますが、2つ目はエラーになりません。

以下はSQLサーバーによって与えられたエラーです

メッセージ263、レベル16、状態1、行1選択するテーブルを指定する必要があります。

理由を教えてください。

注:テーブル名は指定されていません。

前もって感謝します。

4

4 に答える 4

5

動作する理由select count(*)は、デフォルトでmasterデータベースに設定されているためです

他の回答で述べられているように、テーブル名を指定する必要があります。

于 2013-03-26T06:23:29.033 に答える
1

SELECT *完全なクエリではありません

そのはず

SELECT * from MyTableName
于 2013-03-26T06:22:09.150 に答える
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ステートメントの句の順序は重要です。オプション句のいずれかを省略できますが、オプション句を使用する場合は、適切な順序で表示する必要があります。

したがって、selectの後に任意のスカラー値が実行されます。つまり、select 1、select'*'

于 2013-03-26T06:42:30.987 に答える
0

最初のクエリfromでは、それを完了するために、句を定義する必要があります。

SELECT * FROM <Table_Name>

2番目のクエリでは、選択するテーブルを指定しない場合、1回の選択で1つの行のみが返されるため、count(*)は1を返します。

このFROM句はオプションであり、常にこのように機能します。したがって、テーブルを必要とせずに、などを"SELECT 1"行うことができます。"SELECT @val"

他のデータベースシステムでは、次の"DUAL"ようなSELECTステートメントを実行するために使用される1つの行で呼び出されるダミーテーブルがあります。"SELECT 1 FROM dual;"

于 2013-03-26T06:36:54.433 に答える