0
SELECT * FROM table t
SELECT t.* FROM table t

私はそれを試してみましたが、同じ結果が得られましたが、2 番目のバージョンを使用するコードをリファクタリングしているので確認したいのですが、書くのに時間がかかり、単純ではないことに驚きました。

ここに隠されたものはありますか?

MySQL バージョン: 5.5.29-0ubuntu0.12.04.2 (Ubuntu)

4

5 に答える 5

6

あなたの場合、両方のステートメントは同じです。

1 つのクエリで複数のテーブルを結合する場合はそうではありません。

select * 

すべての列を選択します。

select t.*

テーブル t (またはエイリアス t が割り当てられたテーブル)のすべての列を選択する

于 2013-10-18T12:27:59.073 に答える
2

両方のステートメントは、このテーブルから列 (より具体的にはあいまいな列) を一意に識別する必要がある場合に、Join、Apply などのテーブル演算子を使用して別のテーブルと結合されるまで、同じ結果を返します。

ベスト プラクティスとして、select * を使用する代わりに列名を使用する必要があります。これにより、コードが読みやすくなり、任意の時点でテーブル構造が変更された場合にフロント エンド コードが壊れることがなくなります。

于 2013-10-18T12:31:54.283 に答える
2
SELECT * FROM table t and SELECT t.* FROM table t

テーブル全体を返す

SELECT t.* FROM table as t inner join table2 as t2 「テーブル」テーブルのフィールドのみ SELECT * FROM table as t inner join table2 as t2 を返しますが、テーブルとテーブル2のフィールドを返します

于 2013-10-18T12:29:49.807 に答える
1

ステートメントは同じです。あなたが持っているのは、「t」と呼ばれるテーブル「table」のエイリアスだけです。

于 2013-10-18T12:28:10.870 に答える
1

SELECT *クエリ内のすべてのテーブルからすべての列を返します。SELECT t.*は、 という名前またはエイリアスが付けられたテーブルからすべての列を返しますt。関係するテーブルが1つしかないため、例でも同じです。

于 2013-10-18T12:28:23.850 に答える