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

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

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

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

【问题讨论】:

  • 请提供简单的数据和基于它的期望结果。

标签: sql sql-server inner-join


【解决方案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 中对文本字段使用此查询?
        猜你喜欢
        • 2016-11-05
        • 1970-01-01
        • 2013-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        相关资源
        最近更新 更多