0
行查找以下測試表:MySQL5的查詢幫助找到非驗證加入
SELECT * FROM tbl_emp; // There must be few employee with no dept id (did)
+------+-------+------+
| eid | ename | did |
+------+-------+------+
| 1 | SCOTT | 2 |
| 2 | JAMES | 4 |
| 3 | BOND | 1 |
| 4 | TIGER | 5 |
| 5 | CHIP | 0 |
| 6 | DALE | 0 |
| 7 | MARY | 0 |
+------+-------+------+
SELECT * FROM tbl_dept;// There must be few depts which have no employee.
+-------+-------------+
| dptid | dname |
+-------+-------------+
| 1 | HR |
| 2 | IT |
| 3 | ADMIN |
| 4 | TRAVEL |
| 5 | SALES |
| 6 | FINANCE |
| 7 | ENGINEERING |
+-------+-------------+
我想列出從tbl_emp所有員工的姓名不具有部門和所有的DNAME從具有tbl_dept在單個查詢任何員工以下列方式:
DESIRED RESULTSET:
-------------------
ename dname
CHIP
DALE
MARY
ADMIN
FINANCE
ENGINEERING
-------------------
我所能做的是:
SELECT ename FROM tbl_emp WHERE did NOT IN (SELECT dptid FROM tbl_dept);
和
SELECT dname FROM tbl_dept WHERE dptid NOT IN (SELECT did FROM tbl_emp);
請幫忙在單個查詢中同時選擇dname和ename。
請注意,你可以用全外做到這一點加入,但MySQL不支持全外連接。 – 2013-02-17 15:01:58