不确定这是否是正确的地方,但我对初学者sql有疑问。
我有表dept和emp,其中包括:
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
但是你可以看到它不起作用,我尝试了不同的变化,但仍然没有运气。我在正确的轨道上吗?我该如何解决这个问题?
答案 0 :(得分:1)
听起来你想要这样的东西。如果where
子句中有多个条件,则只需指定where
一次,然后将其与and
或or
条件合并。
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;