下面是SQL连接查询,用于列出列的所有记录:dname,ename和location。当我包含“位置”列时,会引发错误:“列定义不明确”
SQL> select dname,ename,location from emp e join dept d on d.deptno=e.deptno;
答案 0 :(得分:4)
由于location
存在于表(emp
,dept
)中,因此您需要表别名(e
或d
)来显式定义列(d.dname, e.ename, e.location
)的来源。
select d.dname, e.ename, e.location
from emp e join
dept d
on d.deptno = e.deptno;
答案 1 :(得分:4)
每当查询中有多个表时,请限定所有列引用!这只是预防问题的好习惯。
这样做时,请使用表别名,该别名是所引用表的缩写。因此,我猜这是您的查询所要执行的操作:
select d.dname, e.ename, e.location
from emp e join
dept d
on d.deptno = e.deptno;
答案 2 :(得分:0)
如果使用的数据表2具有相同的列名,则必须指定表名和字段说明符 例如:“从产品p的内部联接订单中选择p.productName o在p.proID = o.proID上” 产品表的列表列是:proID,proName,proPrice 订单表的列表列为:proID,oid,proName,proPrice。 希望对您有所帮助!