查找不匹配的记录2表,其中条件适用,并从1表中记录显示

时间:2014-07-05 21:47:38

标签: sql sql-server database sql-server-2008

班级表

  • class_code varchar(50)
  • timing varchar(50)
  • emp_id varchar(50)

员工表

  • i_id int
  • emp_id varchar(20)
  • name varchar(50)

    1. 我们有2个表1是员工,其他是表
    2. 我们在员工表中有4条记录,其中emp_id = as-1,as-2,as-3,as-4
    3. 我们在课堂表中有2条记录,其中emp_id = as-1或as-3和timing =' 3-4'

我们从员工表中选择那些可用/免费的时间=' 3-4'比如as-2或as-3,因为as-1或as-3已经在类表中的时间为3-4

1 个答案:

答案 0 :(得分:0)

您没有告诉我们很多,而且所显示的数据可能不完全具有代表性。这两个都将返回员工2和4(&两者将在MySQL或MSsql中工作):

SELECT
      e.*
FROM employee e
      LEFT JOIN class c
            ON e.emp_id = c.emp_id
WHERE (c.timing <> '3-4'
      OR c.timing IS NULL)
;

SELECT
      *
FROM employee
WHERE NOT EXISTS (
            SELECT 1
            FROM class
            WHERE timing = '3-4'
                  AND class.emp_id = employee.emp_id
      )
;

参见this sqlfiddle(MySQL)