以下是我找到的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.name
意思e.name
。d.dept_id
它们有什么区别?
答案1
点.
通常是表名。在您提到的句子中,d
是别名的名称。如果您检查语句FROM
,您有department d
。这意味着您想从表中获取行department
但将其引用为d
(因为department
是一个长词),因此您创建了一个别名。
为了消除字段歧义,因为不同的表可能具有相同的字段名称,您可以在字段前面加上表名(或您的情况下为别名)后跟点。
简而言之,您的意思是:
name
从别名中选择字段,并分别从表和、别名和等d
的连接中计算员工人数。department
employee
d
e
答案2
您可以将默认数据库中的表引用为
tbl_name
或 以db_name.tbl_name
明确指定数据库。
您可以将列引用为col_name
、tbl_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;