我需要从 sql 中选择具有不同值的列

Posted

技术标签:

【中文标题】我需要从 sql 中选择具有不同值的列【英文标题】:I need to select a column with distinct value from sql 【发布时间】:2016-10-03 07:18:48 【问题描述】:

我得到一个表格,其中包含一个包含各个部门的列和另一个包含多个dhdempno 的列。我需要选择一个唯一的dhdempno 代表部门负责人。一个特定部门有多个员工,其dhdmempno 和一个唯一的dhdempno 代表部门负责人。我应该执行什么查询才能获得结果?

例子

Department - dhdempno
abc           1  
abc           1 
abc           2  
asd           5  
asd           5
asd           6

查询应该返回

abc    2
asd    6

【问题讨论】:

你能解释一下这个结果背后的逻辑吗?你需要select a unique dhdempno which represents the department headThe query should return abc - 2 , asd - 6 为什么asd - 6 为什么不asd - 2 您使用的是哪个 DBMS? 【参考方案1】:

这是一个查询,它会给出你正在寻找的结果。

select Department, dhdempno
from (
    SELECT Department, dhdempno, count(dhdempno) as counts
    FROM <your_table_name>
    group by Department, dhdempno ) as sub
where counts = 1;

【讨论】:

【参考方案2】:

试试这个

select departmentid, count(distinct dhdempno) as counting from your_table
group by departmentid

【讨论】:

【参考方案3】:

使用类似查询

SELECT DEPARTMENT,DHDEMPNO FROM DEPARTMENT
GROUP BY DEPARTMENT,DHDEMPNO
HAVING COUNT(DHDEMPNO)=1

将在各个部门为您提供独特的 dhdempono 记录

【讨论】:

任何负面评论的 cmet 将不胜感激。因为它工作得很好。【参考方案4】:
SELECT DepartmentId, MAX(dhdempno)
FROM [Table-name]
GROUP BY DepartmentId

【讨论】:

【参考方案5】:
select [Department],[dhdempno] from [dbo].[Your_Table_Name] where [dhdempno] in (select [dhdempno] from [dbo].[Your_Table_Name] group by [dhdempno] having count(*) = 1)

【讨论】:

【参考方案6】:

使用下面的查询:

select s.Department, max(s.dhdempno)as dhdempno from 
 (
   SELECT DISTINCT DEPARTMENT, dhdempno FROM DUMMY
 ) s group by s.Department

【讨论】:

以上是关于我需要从 sql 中选择具有不同值的列的主要内容,如果未能解决你的问题,请参考以下文章

需要 SQL 在不同的列中查找具有重复值的记录

如何在具有相同 ID 的列中选择不同的值然后删除它们 PHP SQL Server

MySQL选择具有不同值的所有行相同的列

在 SQL 中选择具有唯一列值的行

SQL从具有空值的行数据中选择MIN值

sql查询以选择两列中具有相同id但不同值的记录