2015-09-21 145 views
0

我在数据库中有一个Employee表,它有两列employee_card和ledger_month。员工可以与多个账本月份有关系。现在我想保留员工最高账本月份,其余部分将被删除。删除查询

Input: 
    Employee_card  Ledger_Month 

    1    111112 
    1    111114 
    2    111112 
    2    111114 


    Output : 

    Employee_card  Ledger_Month 

    1    111114 
    2    111114 

我有一个查询试图像这样

delete from v2titas.EMPLOYEE_COPY_UPGRADED where card 
not in(select card,max(ledger_month) from v2titas.EMPLOYEE_COPY_UPGRADED group by card) 
or 
ledger_month not in (select card,max(ledger_month) from 
v2titas.EMPLOYEE_COPY_UPGRADED group by card) 

,但它显示像这样“太多价值”的错误。我怎样才能做到这一点?

回答

0
DELETE FROM v2titas.EMPLOYEE_COPY_UPGRADED et 
WHERE EXISTS (
SELECT * 
FROM v2titas.EMPLOYEE_COPY_UPGRADED it 
WHERE et.card = it.card 
AND et.Ledger_Month < it.Ledger_Month ); 
+0

对不起,是卡emplyee_id –

+1

非常感谢你 –

0

试试下面的查询..

删除emp_test其中ledger_month中(选择emp_testËledger_month其中(employee_card,ledger_month)不 (从emp_test E1其中e选择employee_card,MAX(ledger_month) .employee_card = e1.employee_card group by employee_card));

感谢, 巴拉