如何选择在某列中具有相同值的所有行

Posted

技术标签:

【中文标题】如何选择在某列中具有相同值的所有行【英文标题】:How to select all rows which have same value in some column 【发布时间】:2013-09-20 23:49:45 【问题描述】:

我是 sql 新手,所以请善待。

假设我必须显示所有具有相同电话号码的employee_ids(两列在同一个表中)

我该如何处理这个问题内部连接或其他东西。

【问题讨论】:

请提供简单的数据和基于它的期望结果。 【参考方案1】:
SELECT * FROM employees e1, employees e2 
WHERE e1.phoneNumber = e2.phoneNumber 
AND e1.id != e2.id;

更新:为了更好的性能和更快的查询,最好在 * 之前添加 e1

SELECT e1.* FROM employees e1, employees e2 
WHERE e1.phoneNumber = e2.phoneNumber 
AND e1.id != e2.id;

【讨论】:

【参考方案2】:
select *
from Table1 as t1
where
    exists (
        select *
        from Table1 as t2 
        where t2.Phone = t1.Phone and t2.id <> t1.id
    )

sql fiddle demo

【讨论】:

【参考方案3】:

您可以在没有JOIN 的情况下执行此操作:

SELECT *
FROM (SELECT *,COUNT(*) OVER(PARTITION BY phone_number) as Phone_CT
      FROM YourTable
      )sub
WHERE Phone_CT > 1
ORDER BY phone_number, employee_ids

演示:SQL Fiddle

【讨论】:

【参考方案4】:

怎么样

SELECT *
FROM Employees
WHERE PhoneNumber IN (
    SELECT PhoneNumber
    FROM Employees
    GROUP BY PhoneNumber
    HAVING COUNT(Employee_ID) > 1
    )

SQL Fiddle DEMO

【讨论】:

如何在 SQL Server 中对文本字段使用此查询?

以上是关于如何选择在某列中具有相同值的所有行的主要内容,如果未能解决你的问题,请参考以下文章

SQL选择一列中具有重复值的所有行

编写 SQL 查询,选择除同时在三列中具有指定值的行之外的所有行

如何通过对第 3 列中的值求和,将前 2 列中具有相同值的 Pandas Dataframe 行组合在一起?

SQL:如何为一列中具有重复值的每组行选择一行?

如何对特定列中具有相同值的行求和

MySQL:如何在列中选择具有某些值的 ID [重复]