我需要针对EMP表编写一个查询,该表使用WHERE子句中的子查询返回具有SALESMAN和MANAGER作业的Employees的EMPNO,ENAME和JOB值。
我有这个,但我得到的错误"太多的价值"。我不确定额外值在哪里。我能得到任何帮助,我们将不胜感激。
SELECT *
FROM SCOTT.emp
WHERE SCOTT.emp.job=(SELECT SCOTT.emp.empno, SCOTT.emp.ename, SCOTT.emp.job
FROM SCOTT.emp
WHERE SCOTT.emp.job="SALESMAN" OR SCOTT.emp.job="MANAGER");
答案 0 :(得分:1)
SELECT *
FROM SCOTT.emp
WHERE SCOTT.emp.job in(SELECT SCOTT.emp.job
FROM SCOTT.emp
WHERE SCOTT.emp.job="SALESMAN" OR SCOTT.emp.job="MANAGER");
答案 1 :(得分:0)
您正在使用带有子查询的=
。子查询只能返回一列 - SQL Server不支持这种比较的元组。
这不是你想做的吗?
SELECT e.*
FROM SCOTT.emp e
WHERE e.job IN ('SALESMAN', 'MANAGER');
WHERE
子句中不需要子查询。根本没有必要。
答案 2 :(得分:0)
它有两种选择:
1.您可以替换' ='与' IN' as' ='(等于)只期望一个值,但在您的情况下,有多个值。
所以你的查询应该是:
SELECT *
FROM SCOTT.emp
WHERE SCOTT.emp.job IN (SELECT SCOTT.emp.empno, SCOTT.emp.ename, SCOTT.emp.job
FROM SCOTT.emp
WHERE SCOTT.emp.job="SALESMAN" OR SCOTT.emp.job="MANAGER");
或者在某人的回答中提到,在您的情况下不需要使用子查询直接放
SELECT *
FROM SCOTT.emp
WHERE SCOTT.emp.job in ("SALESMAN","MANAGER");
如果您想使用' ='然后将它与OR一起使用。
SELECT * 来自SCOTT.emp 在哪里SCOTT.emp.job =" SALESMAN"或者SCOTT.emp.job =" MANAGER";