【问题标题】:How to check if there exist only one record for a certain Id如何检查某个ID是否只存在一条记录
【发布时间】:2015-06-09 09:31:24
【问题描述】:

如何检查某个Id是否只存在一条记录

我有两个表,分别名为 Tbl_CompanyTbl_Employee 我正在按如下方式获取员工-

SELECT DISTINCT emp.employee_id
FROM Tbl_Company comp
           , Tbl_Employee emp
WHERE 
           emp.company_id = comp.company_id 
           AND emp.company_id = 1234;

这个查询只返回一个值。 如何确保上述查询为我输入的任何comany_id 返回一个值。

我尝试使用This post 中给出的解决方案,但没有成功。 有没有更简单的方法来做到这一点。

【问题讨论】:

  • 您要返回每家公司的哪一行?
  • 我想获取employee_Id,并希望确保company_id 应该只有一个employee_id
  • 你们每个公司只有一个员工?这没有意义。
  • @AaronDigulla:这只是一个例子
  • 我会写一个查询来计算每家公司的员工人数(因此对公司进行 GROUP BY),您还可以使用 HAVING > 1 来识别需要采取行动的人。

标签: sql oracle oracle10g distinct


【解决方案1】:

这将返回每家公司一行

SELECT comp.companyid, max(emp.employee_id) lastEmployeeID
FROM Tbl_Company comp
           , Tbl_Employee emp
WHERE 
           emp.company_id = comp.company_id 
           AND emp.company_id = 1234
GROUP BY comp.companyid

【讨论】:

  • 请解释一下你做了什么。
  • 原始查询从所有公司中选择了一个 DISTINCT id,我通过在 select 中包含公司 id 和 group by 为每个公司显示了一个 id。我很难找到想要查询的充分理由。
【解决方案2】:

以下查询简单灵活。它将返回一个单独在其公司中的所有员工的列表(返回完整的员工信息)。

您可以通过启用公司的条件来检查定义的公司是否有一个孤独的员工,或者您可以通过启用员工条件来检查员工是否是一个孤独的员工。

SELECT emp.*
FROM Tbl_Company comp
           /*, Tbl_Employee emp*/
WHERE (emp.company_id , 1) in (select t.company_id, count(t.employee_id) from Tbl_Company t )
  --AND emp.company_id = 1111 /*filter conditions on company_id*/
  --AND emp.employee_id = 1234/*filter conditions on employee_id*/;

【讨论】:

    【解决方案3】:

    我已经通过在评论中使用 @davegreen100 的 ans 解决了这个问题

    SELECT comp.companyid, count(distinct emp.employee_id), 
    FROM Tbl_Company comp
               , Tbl_Employee emp
    WHERE 
               emp.company_id = comp.company_id 
               AND emp.company_id = 1234
    GROUP BY comp.companyid
    

    这将为我提供每家公司的员工人数

    【讨论】:

    • 您的 COUNT(DISTINCT) 不正确,应该计算的是employee_id 而不是companyid
    • ... 或者你可以使用 count(*)
    • "comp.employeeId" --employeeid 是 company 表中的一列?
    • @DavidAldridge 回答已编辑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    相关资源
    最近更新 更多