列のテーブルについて、次の情報を取得しようとしています。内部結合と左結合による複製の取得
1)主キー。
2)ISNULLABLE
3)Is_Identity。
問合せ:
SELECT c.name 'Column Name',c.is_nullable,c.is_identity,ISNULL(i.is_primary_key, 0) 'Primary Key' FROM sys.columns c INNER JOIN sys.types t ON c.user_type_id = t.user_type_id LEFT OUTER JOIN sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id LEFT OUTER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id WHERE c.object_id = OBJECT_ID('[HumanResources].[Employee]')
私はAdventure Worksデータベースで働いていますが、ここでの問題は、私はOrganizationNode
列を2回取得していますし、私はその理由を理解することができませんです。
他のテーブルについては、この問題は発生していませんが、テーブル[HumanResources].[Employee]
についてのみこの問題が発生しています。私もdistinct
を試してみましたが、そのためあなたが見ることができるように、それは、列の順序をシャッフル
https://www.dropbox.com/s/nutfat17b73boav/AdvantureWorksSeScript.bak?dl=0
:以下
は、データベースのBAKファイルをダウンロードするためのリンクです2番目の出力。BirthDate is coming at the top instead of BusinessEntityID.
私は他のすべてのテーブルと正常に動作しているが、私はそれが[HumanResources].[Employee]
テーブルの場合には、重複する列を与えているか、私はいくつかのテーブルでそれをテストしていることも理由になっていないです、私の下のクエリとしてdistinct
を使用したくないと他のほとんどのデータベースではクエリが正しく動作しないことがあります。
私が言及している3つのもの(pk,inullable etc.
)をフェッチするために、すべてのシナリオでクエリが正しいかどうかはわかりません。
を試してみてください。私はあなたのデータベースのコピーをプルダウンしませんでした。私はこの問題が何であるか理解していません。おそらく1つ以上の索引を持っているか、索引に1つ以上の列がありますか? –
したがって、テーブルのすべての列とwhere句をリストし、それらが主キーであり、ヌルであり、同一であるかどうかを表示しますか? – SEarle1986
その列が複数のインデックスで使用されている可能性はありますか?クエリのインデックス名を列として追加します。 – KeithL