web-dev-qa-db-ja.com

一部の列で同じ値を持つすべての行を選択する方法

私はSQLが初めてなので、親切にしてください。

同じ電話番号を持つすべてのemployee_idを表示する必要があると仮定します(両方の列が同じテーブルにあります)

この問題の内部結合または何かに進むにはどうすればよいですか?.

24
Win Coder
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;
32
agusluc

どう?

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

SQL Fiddle DEMO

32
Adriaan Stander

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

1
Hart CO