2010-01-20 6 views

Répondre

0
Select fk, Count(*) 
from table1 
group by fk 
having count(*) > 1 
0

La clé primaire par définition signifie qu'il n'y en aura qu'une seule, de sorte que votre question semble apparaître comme étant toutes les lignes ayant plus d'une rangée enfant:

select * 
from table1 t 
where exists (
    select id from table2 t2 
    where t2.fkid = t.id 
    group by t2.id 
    having count(*) > 1 
    ) 
0

Ce extraira toutes fk et des valeurs uniques textVal de la table:

select distinct fk, textVal from myTable 
0

Jetez un oeil à cet exemple.

Cela vous trouverez tous les ID de table1 où il est dupliquée dans TABLEAU2 comme une clé étrangère

DECLARE @Table1 TABLE(
     id INT 
) 

DECLARE @Table2 TABLE(
     id INT, 
     fkid INT 
) 

INSERT INTO @Table1 (id) SELECT 1 
INSERT INTO @Table1 (id) SELECT 2 
INSERT INTO @Table1 (id) SELECT 3 

INSERT INTO @Table2 (id,fkid) SELECT 1, 1 
INSERT INTO @Table2 (id,fkid) SELECT 2, 2 
INSERT INTO @Table2 (id,fkid) SELECT 3, 2 
INSERT INTO @Table2 (id,fkid) SELECT 4, 3 
INSERT INTO @Table2 (id,fkid) SELECT 5, 3 
INSERT INTO @Table2 (id,fkid) SELECT 6, 3 

SELECT t2.fkid 
FROM @Table2 t2 
GROUP BY t2.fkid 
HAVING COUNT(t2.fkid) > 1 
Questions connexes