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

时间:2015-06-09 09:31:25

标签: sql oracle oracle10g distinct

如何检查某个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 帖子中提供的解决方案但没有成功。 有没有更简单的方法来做到这一点。

3 个答案:

答案 0 :(得分:0)

每个公司会返回一行

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

答案 1 :(得分:0)

我已通过在评论

中使用@davegreen100来解决此问题
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

这将给我每个公司的员工数

答案 2 :(得分:0)

以下查询简单灵活。它将返回所有员工的列表,这些员工在他们公司中独自存在(返回完整的员工信息)。

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

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*/;