2

私のクエリはこのようなものです

select 5 from mytable_name;

次に、出力は列名5のようになり、値は5で、そのテーブルに最大行数が存在するため、印刷されます。このクエリがこのように機能する理由を誰か教えてもらえますか?

4

5 に答える 5

4

このクエリがこのように機能する理由を誰か教えてもらえますか?

'5'テーブルの各行に文字列リテラル値を選択しています。

select 5 from mytable_name;

そして、これはうまくいきます。ステートメントでは、SELECT次を選択できるためです。

  • 列参照、
  • あなたの場合のようなリテラル値。
  • 関数。
  • 価値表現。
  • 表現を選択します。

標準 SQL 1で定義されているとおり:

ここに画像の説明を入力

アップデート:

ただし、名前が数字の列がある場合は、次のように値を選択するためにエスケープする必要があります。

 SELECT `143` FROM Table1;

これにより、列内のすべての行が選択されます143

でもこれは:

 SELECT 143 FROM Table1;

テーブルで見つかった各行に対して文字列リテラル 143 を選択します。

次の点に注意してください:可能であれば、これらの列にこのような名前を付けないようにしてください。これは推奨され、ベスト プラクティスです。

SQL フィドルのデモ


更新 2:

143またはを選択すると'143'、またはこれでも列の日付ではなく"143"リテラル値が選択されることに注意してください。143以下は同じです。

SELECT 143 FROM Table1;
SELECT '143' FROM Table1;
SELECT "143" FROM Table1;

これらSELECTはすべて、列のデータを選択するのでは143なく、列のデータではなくリテラル値を選択します。このデモを参照してください:

デモ

次の2つで列名をエスケープする必要があります。

``

このような:

SELECT `143` FROM table1;

いいえ:

SELECT '143' FROM table1'

私がここでやったことのように:

適切なデモ


1 Image From:単なる人間のための SQL クエリ

于 2012-12-03T13:49:28.533 に答える
1
from mytable

where結果を縮小する条件がない場合は、テーブルからすべての行を選択します。と

select 5

5すべてのレコードの定数を選択します。パーツで列名を使用するとselect、その値がすべてのレコードに対して選択されます。

DBエンジンは5、列名を自動的に生成し、5がその論理名であるため、結果に名前を付けます。

于 2012-12-03T13:48:03.433 に答える
1

おそらく「SELECT * FROM mytable_name LIMIT 0,5」が必要ですか?

于 2012-12-03T13:48:39.190 に答える
0

where句には何もないので、テーブルからすべての行を選択しています。どの列も選択しないという事実は関係ありません。表の各行の結果が得られます。

于 2012-12-03T13:48:41.210 に答える
0

コマンドselect 5 ...を使用すると、固定値が表示されます。次のコマンドを実行するのと同じこと: select "test"、固定文字列が表示されます。
を使用し... from mytable_nameて、このテーブルのすべてのレコードを探しています。

mytable_nameこれにより、テーブル内の各レコードに対して固定値が表示されると結論付けることができます"5"

于 2012-12-03T13:52:23.063 に答える