如何选择在某列中具有相同值的所有行
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 查询,选择除同时在三列中具有指定值的行之外的所有行