3

1対多の関係にあるはずの2つのテーブルがありますが、テーブルの多くの側に、関係の作成を妨げているレコードがいくつかあるようです。参照整合性に違反します。

両方のテーブルに多くのレコードがあるので、どちらのレコードが一方の側ではなく、多くの側にあるかを照会する方法はありますか?

**Ex.**

Table 1: (one side)
(pk)AccountId


Table 2: (many side)
(pk)UserId
(fk)AccountId  <--  Some accountId's are not in Table 1 
4

5 に答える 5

10
select *
from table2 t2
where not exists(
    select 1
    from table1 t1
    where t1.AccountId = t2.AccountId
)
于 2012-06-06T19:52:02.227 に答える
4
select a.*
from Table2 as a
where not exists (select null from table1 as b where b.AccountId = a.AccountId);
于 2012-06-06T19:52:38.740 に答える
3
SELECT table2.UserId, table2.AccountId
FROM table1 RIGHT JOIN table2 ON table1.AccountId = table2.AccountId
WHERE table1.AccountId IS NULL;

http://sqlfiddle.com/#!3/5b8e30/4

于 2012-06-06T19:52:30.873 に答える
1
FROM Table2 t2
WHERE t2.AccountId not in (SELECT t1.AccountId FROM Table1 t1)

または、参加したい場合は...

FROM Table2 t2
  LEFT JOIN Table1 t1
  ON t2.AccountId = t1.AccountId
WHERE t1.AccountId is null
于 2012-06-06T19:54:57.530 に答える
0

SQL SERVERでは、次のコマンドを使用できます。

 DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS
于 2021-09-02T20:50:58.683 に答える