代码之家  ›  专栏  ›  技术社区  ›  Iftekher Uddin Majumder

查询删除

  •  0
  • Iftekher Uddin Majumder  · 技术社区  · 9 年前

    我在数据库中有一个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)
    

    但它显示了一个类似“太多值”的错误。我该怎么做?

    2 回复  |  直到 9 年前
        1
  •  0
  •   Panther    9 年前
       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    );
    
        2
  •  0
  •   Bala S    9 年前

    尝试以下查询。。

    从emp_test中删除其中ledgermonth在(从emp_teste中选择ledgermonte,其中(employee_card,ledgermonths)不在 (从emp_test e1中选择employee_card,max(ledger_month),其中e.employee.card=e1.eemployeer_card组,按employee_card));

    谢谢 巴拉