1

Ниже приведен оператор 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 . В чем разница?

2 ответа2

5

. обычно это имя таблицы. В предложении, которое вы упоминаете, d - это имя псевдонима. Если вы проверите заявление FROM , у вас есть department d . Это означает, что вы хотите извлечь строки из таблицы department но ссылаться на них как d (потому что department - это длинное слово), поэтому вы создаете псевдоним.

Чтобы устранить неоднозначность полей, поскольку разные таблицы могут иметь одинаковые имена полей, вы можете добавить в поле имя таблицы (или псевдоним в вашем случае), за которой следует точка.

Короче говоря, вы говорите:

Выберите name поля из псевдонима d и посчитайте количество сотрудников из объединения таблиц department и employee , с псевдонимами d и e соответственно и т.д.

0

От Dev.MySQL.com:

Вы можете ссылаться на таблицу в базе данных по умолчанию как 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;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .