3

プライマリキーまたは一意キーの制約が定義されていないMSSQLテーブルを使用しています。xIdとyIdという2つのフィールドがあり、これらを一緒にすると複合キーになると思いますが、データを調べてこれを確認したいと思います。

xIdとyId(または必要な3番目の列ID)の組み合わせが実際に可能かどうかを論理的に判断するテーブル上のレコードの総数と比較できるSQLカウントステートメントを記述できるはずだと考えています。複合キーとして機能します。ただし、これを確認または反証する適切なGROUPBYまたはその他のタイプの句を思い付くのに問題があります。

何か案は?

4

3 に答える 3

4

使用group byhaving

select xid,yid
from table
group by xid,yid
having count(1) > 1

これにより、一意ではないペアが表示されるため、行が返されない場合は、適切なキーが返されます。

于 2011-11-30T22:15:47.417 に答える
2

countテーブルの合計行のaを実行してから、

select count(1)
from(
    select xid,yid
    from table
    group by xid,yid
)a;

とのすべてのペアが一意の識別子xidを形成する場合、2つの数値は同じになります。yid

xidまたは、との個別のペアの数を数えて、yidそのような最大の数を見つけることもできます。

select max(num_rows)
from(
    select xid,yid,count(1) as num_rows
    from table
    group by xid,yid
)a;

このクエリの結果は、( 、)ペアがテーブルの一意の識別子を形成する1場合に限ります。xidyid

于 2011-11-30T22:12:12.470 に答える
0

これにより、xid、yidのすべての問題の組み合わせ(存在する場合)が一覧表示されます。

SELECT
    COUNT(*),xid,yid
    FROM YourTable
    GROUP BY xid,yid
    HAVING COUNT(*)>1
于 2011-11-30T22:16:29.010 に答える