我试图从具有相同列名的左连接中获取结果 我试图做什么总是得到不知道的专栏或归档或其他东西..我的错误在哪里?
数据库
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/