MySQL 子查询 - MySQL 3.23

2022-01-23 00:00:00 subquery mysql

我有 2 个表,emp_master 和 passport_details.

emp_master(emp_id,first_name,email_id,dob,doj,status.........)护照详细信息(id,emp_id,passport_number,given_name,......).

我正在尝试从没有输入 passport_details 的 emp_master 中获取 emp_id 和 first_name.

我尝试了不同的子查询组合,使用 NOT IN,NOT EXISTS.

SELECT emp_id,first_nameFROM emp_masterWHERE emp_id NOT IN(SELECT emp_id FROM passport_details WHERE status=1);

我遇到错误

第 3 行的SELECT emp_id FROM passport_details WHERE status=1)"附近的 SQL 语法有错误

我使用的是 MySQL 3.23.

我的问题是

<块引用>

  1. MySQL 3.23 是否支持子查询?
  2. 从没有输入 passport_details 的 emp_master 中获取 emp_id 和 first_name 的最佳查询可能是什么.

解决方案

select em.emp_id, em.first_name从emp_master em 离开加入passport_details pd在 pd.emp_id = em.emp_id 和 pd.status = 1其中 pd.emp_id 为空

我没有要测试的 3.23 实例,但这应该可以.

I've 2 tables, emp_master and passport_details.

emp_master(emp_id,first_name,email_id,dob,doj,status.........)
passport_details(id, emp_id,passport_number,given_name,......).

I am trying to fetch emp_id and first_name from emp_master who have not entered passport_details.

I tried different combination of SubQueries, used 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);

I am getting error

You have an error in your SQL syntax near 'SELECT emp_id FROM passport_details WHERE status=1)' at line 3

I am using MySQL 3.23.

My question is

  1. Do MySQL 3.23 supports SubQueries?
  2. What could be the optimal query to fetch emp_id and first_name from emp_master who have not entered passport_details.

解决方案

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

I don't have a 3.23 instance to test with, but this should work.

相关文章