1

emp_masterとpassport_detailsの2つのテーブルがあります。

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を取得しようとしています。

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

MySQL3.23を使用しています。

私の質問は

  1. MySQL 3.23はサブクエリをサポートしていますか?
  2. passport_detailsを入力していないemp_masterからemp_idとfirst_nameをフェッチするための最適なクエリは何でしょうか。
4

4 に答える 4

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 インスタンスはありませんが、これで動作するはずです。

于 2012-07-04T04:42:15.543 に答える
2

簡単な Google は、MySql 4.1 でサブクエリが導入されたことを示唆しています。そのため、3.23 ではサポートされていません。

代わりに、これらの行に沿ってあなたの何か:

SELECT emp_id,first_name
FROM emp_master
JOIN passport_details ON emp_id
WHERE status = 1;
于 2012-07-04T04:44:37.547 に答える
1

1.) サブクエリは MySQL 4.1 で追加されました 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;
于 2012-07-04T04:47:01.293 に答える
0

いいえ、サブクエリは 4.1 までサポートされていません: http://dev.mysql.com/doc/refman/4.1/en/mysql-nutshell.html

于 2012-07-04T04:45:00.203 に答える