以下によって作成された 2 つのテーブルがあるとします。
CREATE TABLE emp
(
EMPNO int,
EMPNAME varchar(255),
JOB varchar(255),
DEPTNO int
);
CREATE TABLE dept
(
LOC varchar(255),
DEPTNO int
);
従業員がいない部署を知りたいです。次のような左結合を使用します。
select dept.*
from dept
left join emp
on (dept.deptno=emp.deptno)
where emp.empno is null;
しかし、dept または emp にエイリアスを使用すると、エイリアスしか使用できず、元のテーブル名は使用できません。例えば:
select dept.*
from dept as d
left join emp
on (dept.deptno=emp.deptno)
where emp.empno is null;
sqlite から「no such table: dept」というエラーが表示されます。
1 つのテーブルで操作を実行する場合、エイリアスと元のテーブル名を同じクエリで使用できます。
理由を知っている人はいますか?