mysql - 如何定义具有相同名称的 LEFT JOIN 变量

标签 mysql sql

我试图从具有相同列名的左连接中获取结果 我试图做什么总是得到不知道的专栏或归档或其他东西..我的错误在哪里?

数据库

oc_damask_name 列

id,name,filter_id

oc_damask_description 列

id,name,filter_id,filter_group_id

查询

SELECT oc_damask_description.name as ddname, oc_damask_name.* 
FROM  oc_damask_description dd 
    LEFT JOIN oc_damask_name dn ON (dd.filter_id =  dn.filter_id)

错误

#1051 - Unknown table 'test.oc_damask_name'

最佳答案

如果您在 from 子句中使用别名,则在之后逻辑计算的任何子句中,该表引用在其原始表名称下不再可用1。其中包括选择。您需要改用别名:

SELECT dd.name as ddname, dn.* 
FROM  oc_damask_description dd #oc_damask_description no longer exists, dd does
    LEFT JOIN oc_damask_name dn #oc_damask_name no longer exists, dn does
    ON (dd.filter_id =  dn.filter_id)

当然,没有什么可以阻止您向 from 子句添加对同一个表的第二个引用,如果该引用没有别名,则表名将再次回到范围内,但引用第二个引用。

<小时/>

1这使得 SQL 别名与“别名”一词的其他用法有所不同,无论是在日常生活中还是在其他技术领域中。在 SQL 中,别名替换现有名称,而不是作为备用名称并允许使用任一名称来引用相同的“事物”。

关于mysql - 如何定义具有相同名称的 LEFT JOIN 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54195680/

相关文章:

java - mybatis嵌套异常是org.apache.ibatis.reflection.ReflectionException

SQL复杂查询

sql - 为什么带有 DELETE 的 PostgreSQL CTE 不起作用?

sql - RODBC 错误 : Could not SQLExecDirect

c# - 在 gridview 中删除不起作用

mysql - jdbc-mysql 如果变量为空, "' +变量 +'"的值会发生什么?

SQL 返回落在期间和范围内的日期

mysql - 如何在MYSQL中加入具有外键关系的多个表,包括没有对应条目的条目

sql - ORDER BY 仅适用于列别名

mysql - If Not Exists 语法 MySQL