MySQL SubQuery - MySQL 3.23

时间:2012-07-04 04:37:41

标签: mysql subquery

我有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。

我的问题是

  
      
  1. MySQL 3.23支持SubQueries吗?
  2.   
  3. 从emp_master中获取未输入passport_details的emp_id和first_name的最佳查询是什么。
  4.   

4 个答案:

答案 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

才支持子查询