SQL |使用条款
如果多个列具有相同的名称但数据类型不匹配,则可以使用 USING子句修改 NATURAL JOIN 子句以指定应用于 EQUIJOIN 的列。
- 当多列匹配时,使用 USING 子句仅匹配一列。
- NATURAL JOIN 和 USING 子句是互斥的。
- 它在引用的列中不应有限定符(表名或别名)。
- NATURAL JOIN 使用具有匹配名称和数据类型的所有列来连接表。 USING 子句可用于仅指定应用于 EQUIJOIN 的那些列。
例子:
我们将在以下基表上应用以下提到的命令:
QUERY 1:编写 SQL 查询来查找员工的工作位置。还要给出他们各自的employee_id 和last_name?
输入: SELECT e.EMPLOYEE_ID, e.LAST_NAME, d.LOCATION_ID FROM Employees e JOIN Departments d USING(DEPARTMENT_ID);输出 :
说明:显示的示例连接了 EMPLOYEES 和 DEPARTMENTS 中的 DEPARTMENT_ID 列
表格,从而显示员工工作的位置。
我们将在以下基表上应用以下提到的命令:
QUERY 2:编写 SQL 查询来查找 location_id、street_address、postal_code 和它们各自的国家名称?
输入: SELECT l.location_id, l.street_address, l.postal_code, c.country_name FROM locations l JOIN countries c USING(country_id);输出 :
说明:显示的示例连接了 LOCATIONS 和 COUNTRIES 中的 COUNTRY_ID 列
表,从而显示所需的详细信息。
注意:当我们在连接语句中使用 USING 子句时,连接列不符合表别名。即使在 SQL 语句的其他地方使用了相同的列,也不要给它起别名:
例子:
输入:SELECT l.location_id, l.street_address, l.postal_code, c.country_name FROM locations l JOIN countries c USING(country_id) WHERE c.country_id'IT';输出:
解释:由于在 WHERE 子句中再次使用了 USING 子句中的列,因此它向用户抛出了错误。