使用JOIN的SQL子查询

巴耶洛

我正在尝试学习子查询。
我对此有麻烦:

两张表:

CREATE TABLE DEPT
(DEPTNO NUMBER(2) CONSTRAINT DEPT_PRIMARY_KEY PRIMARY KEY,
LOC varchar2(3));

CREATE TABLE EMP
(ENAME varchar2(10),
JOB varchar2(9),
DEPTNO NUMBER(2) NOT NULL
CONSTRAINT EMP_FOREIGN_KEY REFERENCES DEPT (DEPTNO));

我想获取名称(emp.ename)和工作(emp.job),但仅在“芝加哥”中也存在工作的地方。

这是我所做的:

SELECT emp1.ename, emp1.job
FROM emp emp1
WHERE emp1.job EXISTS (SELECT emp2.job
                      FROM emp emp2
                      FULL JOIN dept ON (emp2.deptno = dept.deptno)
                      WHERE dept.loc = 'CHICAGO');

我总是在第3行中收到“无效的关系运算符”错误。

结果示例:

ENAME | JOB  | LOC 
JONES | SALE | CHICAGO 
FORD  | SALE | NEW YORK  //He doesn't sit in CHICAGO but the job also exists in Chicago 
尼山提·格拉希亚

为了简化查询,您可以使用:

select emp1.ename, emp1.job 
from EMP emp1 
where emp1.deptno in (SELECT DEPT.DEPTNO from DEPT where DEPT.loc = 'CHICAGO');

要从emp1中选择名称和工作,其中emp1的工作与emp2的位置芝加哥的工作相同:

SELECT emp1.ename, emp1.job
FROM emp emp1
WHERE emp1.job IN (SELECT emp2.job
                      FROM emp emp2
                      FULL JOIN dept ON (emp2.deptno = dept.deptno)
                      WHERE dept.loc = 'CHICAGO');

如果存在至少一个在芝加哥中具有位置的记录,则从emp1中选择名称和工作。

  SELECT emp1.ename, emp1.job
    FROM emp emp1
    WHERE  EXISTS (SELECT emp2.job
                   FROM emp emp2
                   FULL JOIN dept ON (emp2.deptno = dept.deptno)
                   WHERE dept.loc = 'CHICAGO');

在您的情况下,我认为第一个和第二个查询会更合适。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用子查询访问SQL JOIN

来自分类Dev

SQL子查询或JOIN

来自分类Dev

SQL Join vs子查询

来自分类Dev

SQL JOIN:帮助使用基于联接的子查询

来自分类Dev

如何在SQL中使用JOIN编写子查询

来自分类Dev

SQL多个JOIN或子查询,但避免使用笛卡尔积

来自分类Dev

使用SQL子查询或JOIN子句进行选择

来自分类Dev

使用ON或JOIN的SQL查询

来自分类Dev

使用Join的Sql Not IN查询

来自分类Dev

使用子查询加速JOIN

来自分类Dev

多个INNER JOIN子查询sql

来自分类Dev

SQL JOIN多个表和子查询

来自分类Dev

子查询 SQL 中的 INNER JOIN

来自分类Dev

使用JOIN的SQL UPDATE查询

来自分类Dev

如何使用JOIN代替子查询(NOT IN)

来自分类Dev

使用子查询语法的LEFT OUTER JOIN

来自分类Dev

如何使用JOIN代替子查询(NOT IN)

来自分类Dev

如何使用SQL子查询?

来自分类Dev

使用子查询对Linq进行SQL查询

来自分类Dev

使用子查询的Sql查询语言

来自分类Dev

Join子查询中的计数和总和-我可以使用ActiveRecord建立此sql查询吗?

来自分类Dev

我如何使用Join而不是子查询进行后续查询?

来自分类Dev

如何使用带有子查询的join优化查询?

来自分类Dev

使用 Join 将子查询转换为查询

来自分类Dev

Sql - 使用子查询更新 sql

来自分类Dev

MySQL子查询JOIN

来自分类Dev

Mysql JOIN子查询

来自分类Dev

子查询和JOIN在COUNT上应用MAX SQL Oracle

来自分类Dev

如何使用Join编写等效的SQL查询?