显示MSSQL表中缺少的行

时间:2013-09-03 05:53:47

标签: sql-server

我有两个数据表,一个是:

“cards”表包含:

   id                           Department
0000022288                      COR 
0000043880                      NA  
0000031643                      NA  
0000013870                      TRAN
0000053900                      COR 
0000055452                      IOR 
0000010957                      IOR 
0000025746                      BILL
0000061783                      BILL
0000000773                      NA  

我有另一张桌子(valid_entry):

date         emp_id    emp_time
20130101    0000002001  101825    
20130102    0000002001  085024    
20130103    0000002001  085657    
20130106    0000002001  095145    
20130107    0000002001  090724    
20130108    0000002001  091244    

我想显示那些不在有效表中的id。

我的疑问:

SELECT  emp_valid_date
    ,   emp_valid_name
    ,   emp_valid_time
    ,   emp_valid_dept
    ,   Name
FROM valid_entry
INNER JOIN Cards ON emp_valid_dept = Depart_Code
WHERE emp_valid_date = '$date'
    AND emp_valid_time >= 060000
    AND emp_valid_time <= 230000
    AND emp_valid_dept != 'DRI' OR emp_valid_time = ''

如果我能得到类似的东西,那就太好了。

date         emp_id    emp_time card_id_missing
20130101    0000002001  101825    
20130102                        0000002001  
20130103    0000002001  085657    
20130106    0000002001  095145    
20130107    0000002001  090724    
20130108    0000002001  091244 

我想要这样的东西

2 个答案:

答案 0 :(得分:1)

尝试此查询

    SELECT ID from Cards C
    LEFT OUTER JOIN valid_entry VE
    ON C.ID = VE.emp_id
    WHERE VE.emp_id IS NULL

如果需要显示所有行,请删除WHERE子句。它将返回所有行,但对于行中的行而言为NULL,但不在valid_entry

拉​​吉

答案 1 :(得分:0)

这样的东西
SELECT * FROM cards WHERE id NOT IN (SELECT emp_id FROM valid entry)
相关问题