有什么方法可以编写具有以下功能的查询,添加 where 子句作为条件方式,
select e.emp_id, emp.admin_user from employees e
if emp.admin != 'Y'
then
query run with where clause
else
query run without where clause ?
最佳答案
使用 案例 中的表达式哪里条款应该可以解决问题。当你说如果条件不满足你不需要 where 子句,那么你想要的只是一个像 WHERE 1 = 1
这样的条件。 ,即当条件不满足时返回所有行。所以,你需要像往常一样使不满足条件真 .
例如,
我有一张员工表,
SQL> SELECT empno, ename, deptno
2 FROM emp;
EMPNO ENAME DEPTNO
---------- ---------- ----------
7369 SMITH 20
7499 ALLEN 30
7521 WARD 30
7566 JONES 20
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7844 TURNER 30
7876 ADAMS 20
7900 JAMES 30
7902 FORD 20
7934 MILLER 10
14 rows selected.
SQL>
我想选择员工详细信息,如果部门是 20 则使用 where 子句 else 返回所有员工详细信息,但过滤满足 where 条件的部门。
SQL> SELECT empno, ename, deptno
2 FROM emp
3 WHERE ename =
4 CASE
5 WHEN deptno = 20
6 THEN 'SCOTT'
7 ELSE ename
8 END
9 /
EMPNO ENAME DEPTNO
---------- ---------- ----------
7499 ALLEN 30
7521 WARD 30
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7844 TURNER 30
7900 JAMES 30
7934 MILLER 10
10 rows selected.
SQL>
因此,对于部门 20,过滤器由 where 子句应用,我只得到 ename SCOTT 的行,对于其他部门,它返回所有行。
关于Oracle 条件 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29027425/