| 員工號 | 姓名 | 作業 | 經理 | 雇用日期 | 薩爾 | 通訊 | 部門號 |
|---|---|---|---|---|---|---|---|
| 7369 | 史密斯 | 文員 | 7902 | 1980-12-17 00:00:00 | 800 | 2 | |
| 7499 | 艾倫 | 推銷員 | 7698 | 1981-02-20 00:00:00 | 1600 | 300 | 3 |
| 7521 | 病房 | 推銷員 | 7698 | 0000-00-00 00:00:00 | 1250 | 500 | 3 |
| 7566 | 瓊斯 | 經理 | 7839 | 0000-00-00 00:00:00 | 2975 | 2 | |
| 7654 | 馬丁 | 推銷員 | 7698 | 0000-00-00 00:00:00 | 1250 | 1400 | 3 |
| 7698 | 布萊克 | 經理 | 7839 | 0000-00-00 00:00:00 | 2850 | 3 | |
| 7782 | 克拉克 | 經理 | 7839 | 0000-00-00 00:00:00 | 2450 | 1 | |
| 7788 | 斯科特 | 分析師 | 7566 | 0000-00-00 00:00:00 | 3000 | 2 | |
| 7839 | 國王 | 總統 | 0000-00-00 00:00:00 | 5000 | 1 | ||
| 7844 | 車工 | 推銷員 | 7698 | 0000-00-00 00:00:00 | 1500 | 0 | 3 |
| 7876 | 亞當斯 | 文員 | 7788 | 0000-00-00 00:00:00 | 1100 | 2 | |
| 7900 | 詹姆士 | 文員 | 7698 | 0000-00-00 00:00:00 | 950 | 3 | |
| 7902 | 福特 | 分析師 | 7566 | 0000-00-00 00:00:00 | 3000 | 2 | |
| 7934 | 磨坊主 | 文員 | 7782 | 0000-00-00 00:00:00 | 1300 | 1 |
我有這張桌子。我希望使用子查詢來查找 deptno1 中與 deptno3 中職位相同的員工
所以一個真實的輸出應該是這樣的:
| 姓名 | 作業 |
|---|---|
| 克拉克 | 經理 |
| 磨坊主 | 文員 |
我是 mysql 新手,但在遇到子查詢問題之前我沒有遇到任何真正的困難,所以如果有人能簡要解釋它是什么,以及我如何有效地使用它,我將非常感激。
這是我嘗試解決的問題,但它不起作用:
select ename, job from emp where deptno = (select deptno from emp where deptno = 1);
uj5u.com熱心網友回復:
也許您的查詢會更好地表達為
select ename, job
from emp
where depno = 1 and job in (select job from emp where deptno = 3);
uj5u.com熱心網友回復:
您可以使用自加入
select t1.ename, t1.job
from emp t1
inner join emp t2 on t1.job = t2.job
and t1.deptno = 1
and t2.deptno = 3
uj5u.com熱心網友回復:
這個查詢:
SELECT job FROM emp WHERE deptno = 3
回傳所有jobs deptno = 3,您應該在WHERE查詢的子句中使用它,IN而不是使用運算子=:
SELECT ename, job
FROM emp
WHERE deptno = 1
AND job IN (SELECT job FROM emp WHERE deptno = 3);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/428855.html
標籤:mysql
