web-dev-qa-db-fra.com

Comment sélectionner toutes les lignes qui ont la même valeur dans une colonne

Je suis nouveau sur sql alors soyez gentil.

Supposons que je dois afficher tous les employee_ids qui ont le même numéro de téléphone (les deux colonnes sont dans la même table)

Comment puis-je procéder sur ce problème de jointure interne ou quelque chose.

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

Mise à jour: pour de meilleures performances et une requête plus rapide, il est bon d'ajouter e1 avant *

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

Que diriez-vous

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

SQL Fiddle DEMO

32
Adriaan Stander

Vous pouvez le faire sans 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

Démo: SQL Fiddle

1
Hart CO