我有2张桌子,emp_master和passport_details。
emp_master(emp_id,first_name,email_id,dob,doj,status.........)
passport_details(id, emp_id,passport_number,given_name,......).
我正在尝试从未输入passport_details的emp_master中获取emp_id和first_name。
我尝试了不同的SubQueries组合,使用NOT IN,NOT EXISTS。
SELECT emp_id,first_name
FROM emp_master
WHERE emp_id NOT IN(SELECT emp_id FROM passport_details WHERE status=1);
我收到错误
You have an error in your SQL syntax near 'SELECT emp_id FROM passport_details WHERE status=1)' at line 3
我正在使用MySQL 3.23。
我的问题是
- MySQL 3.23支持SubQueries吗?
- 从emp_master中获取未输入passport_details的emp_id和first_name的最佳查询是什么。
醇>
答案 0 :(得分:5)
select em.emp_id, em.first_name
from emp_master em left join passport_details pd
on pd.emp_id = em.emp_id and pd.status = 1
where pd.emp_id is null
我没有要测试的3.23实例,但这应该可行。
答案 1 :(得分:2)
Google快速建议在MySql 4.1中引入子查询。所以他们在3.23中不受支持。
相反,你可以选择以下内容:
SELECT emp_id,first_name
FROM emp_master
JOIN passport_details ON emp_id
WHERE status = 1;
答案 2 :(得分:1)
1。)在MySQL 4.1 SubQuery in MySQL
中添加了子查询
您可以将查询重写为此JOIN
语句。
SELECT a.emp_id,
a.first_name
FROM emp_master a
LEFT JOIN passport_details b
on a.emp_id = b.emp_id
WHERE a.`Status` = 1 AND
b.emp_id IS NULL;
答案 3 :(得分:0)
不,直到4.1:http://dev.mysql.com/doc/refman/4.1/en/mysql-nutshell.html
才支持子查询