web-dev-qa-db-ja.com

MySQLのSQLステートメント、ドット演算子の使用

以下は私が見つけたSQLステートメントです:

SELECT d.name, count(e.emp_id) num_employees
FROM department d INNER JOIN employee e
  ON d.dept_id = e.dept_id
GROUP BY d.name
HAVING count(e.emp_id) > 2;

何を知りたかったd.namee.nameまたはd.dept_id平均。違いはなんですか?

1
edgards

ドット.は通常テーブル名です。あなたが言及した文では、dはエイリアス名の名前です。 FROMステートメントを確認すると、department d。つまり、テーブルdepartmentから行をフェッチしたいが、それをdとして参照したい(departmentは長いWordであるため)ので、エイリアスを作成します。

フィールドを明確にするために、異なるテーブルが同じフィールド名を持っている可能性があるため、フィールドの前にテーブル名(またはあなたの場合はエイリアス)の後にドットを付けることができます。

つまり、あなたが言っているのは:

エイリアスnameからフィールドdを選択し、テーブルdepartmentemployee、エイリアスdの結合から従業員数をカウントします。それぞれeなど。

5
nKn

から Dev.MySQL.com

デフォルトデータベース内のテーブルをtbl_nameまたはdb_name.tbl_nameとして参照して、データベースを明示的に指定できます。
列はcol_nametbl_name.col_name、またはdb_name.tbl_name.col_nameとして参照できます。 参照があいまいでない限り、列参照にtbl_nameまたはdb_name.tbl_nameプレフィックスを指定する必要はありません。 -)。


識別子修飾子

MySQLは、単一の識別子または複数の識別子で構成される名前を許可します。複数パーツ名のコンポーネントは、ピリオド(“ .”)文字で区切る必要があります。複数部分の名前の最初の部分は、最終的な識別子が解釈されるコンテキストに影響を与える修飾子として機能します。


テーブル参照は、tbl_name AS alias_nameまたはtbl_name alias_nameを使用してエイリアスできます。

SELECT t1.name, t2.salary FROM employee AS t1, info AS t2
WHERE t1.name = t2.name;

SELECT t1.name, t2.salary FROM employee t1, info t2
WHERE t1.name = t2.name;
0
shA.t