我只是从简单的查询开始out..experimenting。在下面的联接查询中,FROM子句中的backticks阻止查询运行--错误是“无法识别的名称:9:5的员工”,但是删除回车,查询运行良好。为什么会这样呢?谢谢!
SELECT
employees.name AS employee_name,
employees.role AS employee_role,
departments.name AS department_name
FROM
`employees_data.employees`
INNER JOIN
employees_data.departments ON
employees.department_id = departments.department_id发布于 2022-01-29 19:47:52
如果使用的是引用的标识符,则必须分别引用数据库和表名,即:
SELECT
employees.name AS employee_name,
employees.role AS employee_role,
departments.name AS department_name
FROM
`employees_data`.`employees`
INNER JOIN
employees_data.departments ON
employees.department_id = departments.department_id发布于 2022-01-29 20:15:21
当引用像employees_data.employees这样的标识符时,意味着整个标识符。from `employees_data.employees`引用.。它的意思是“从表employees_data.employees”。与from employees_data.employees或from `employees_data`.`employees`相反,意思是“模式中的表雇员”(Employees_data)。
引用单个标识符、employees_data和employees;.是语法。
通常,如果您不需要引用标识符,就不会引用。它可以带来其他奇怪的行为。例如,SQL通常不区分大小写,但引用标识符将使其区分大小写.employees将匹配employees、Employees或EMPLOYEES,但`employees`只匹配employees。
此外,一致地使用模式限定符。在你的查询中,有时你这样做,有时你不知道。例如,你的inner join令人困惑。你将加入employees_data.departments on employees和departments。departments和employees_data.departments一样吗?employees_data.employees与employees相同吗?
--如果它们都在同一个模式中,就不要使用模式。完全限定表名不必要地人为地限制查询仅在该架构上工作;如果架构名称更改,查询将中断。
SELECT
employees.name AS employee_name,
employees.role AS employee_role,
departments.name AS department_name
FROM
employees
INNER JOIN
departments ON employees.department_id = departments.department_id这将在当前架构中查询表,而不管其名称如何。
https://stackoverflow.com/questions/70909133
复制相似问题