2010-01-20 38 views

回答

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

主鍵的定義意味着只有一個,所以你的問題看起來實際上似乎是具有多於一個子行的任何行:

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

這會檢索所有獨特的FK和textVal值從表:

select distinct fk, textVal from myTable 
0

看一看這個例子。

這會找到你TABLE1它是表2中複製爲外鍵

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 
相關問題