基本查询搜索的问题

Trouble With Basic Query Searching

不确定这里是否适合提问,但我有一个新手问题 sql。

我有 table 部门和员工,其中包括:

SQL> desc dept;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------

 DEPTNO                                             NUMBER(2)
 DNAME                                              VARCHAR2(14)
 LOC                                       NOT NULL VARCHAR2(13)

SQL> desc emp;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------

 EMPNO                                              NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

我需要搜索部门 30 中的所有工作并包括部门 30 的位置。

我正在尝试的是:

SQL> select emp.job, dept.deptno, dept.loc
  2  from emp, dept
  3  where emp.deptno = dept.deptno
  4  where deptno = '30';
where deptno = '30'
*
ERROR at line 4:
ORA-00933: SQL command not properly ended

但是如您所见,它不起作用,我尝试了不同的变体,但仍然没有成功。我在正确的轨道上吗?我该如何解决?

听起来你想要这样的东西。当 where 子句中有多个条件时,只需指定一次 where 并将它们与 andor 条件组合。

select emp.job, dept.deptno, dept.loc
 from emp, dept
where emp.deptno = dept.deptno
  and dept.deptno = 30;

除非出于某种原因确实需要使用旧的连接语法,否则您可能应该从 SQL 99 语法开始。它使得在数据库之间移动变得更加容易,它通过分离连接和过滤条件使您的查询更容易阅读,并且当您开始处理外部连接时,它使生活变得更加轻松。

select emp.job, dept.deptno, dept.loc
 from emp 
      join dept
        on( emp.deptno = dept.deptno )
where dept.deptno = 30;