【问题标题】:SQL query for below condition以下条件的 SQL 查询
【发布时间】:2016-10-14 12:26:16
【问题描述】:
Employee_id    Status 
-----------------------
111            Approved
111            Approved
111            Pending
222            Approved
222            Approved

在我上面的表格中,只有 222 个应该得到批准的解决方案。

我尝试过的:

select distinct employee_id, status
from main_table 

【问题讨论】:

  • 描述你为什么想要这个答案。并向我们​​展示您当前的查询尝试。
  • 从main_table中选择不同的employee_id,status

标签: mysql sql select


【解决方案1】:

如果我理解正确,您正在寻找除了“已批准”之外没有任何状态的员工。这可以表示为not exists 条件:

SELECT DISTINCT employee_id
FROM   main_table a
WHERE  NOT EXISTS (SELECT *
                   FROM   main_table b
                   WHERE  a.employee_id = b.employee_id AND
                          b.status != 'Approved')

【讨论】:

    【解决方案2】:

    试试这个:

    SELECT DISTINCT employee_id
    FROM main_table
    WHERE employee_id NOT IN (SELECT s.employee_id FROM main_table as s
                              WHERE Status != 'Approved')
    

    【讨论】:

    • 我知道这里不是这种情况,但我更喜欢 NOT EXISTS 在 NOT IN 之前,因为 NOT IN 在涉及 NULL 值时有点棘手。始终坚持不存在,你是安全的!
    【解决方案3】:
    SELECT employee_id
      FROM main_table a
     GROUP BY employee_id
    HAVING sum( case status when 'Approved' then 0 else 1 end ) = 0
    

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2017-04-14
      • 2011-07-01
      • 1970-01-01
      • 2016-12-10
      • 2023-04-06
      相关资源
      最近更新 更多