2

LEFT JOIN2 番目のテーブルからの一致があるかどうかに関係なく、最初のテーブルからすべてのレコードを取得するために実行している 2 つのテーブルがあります。

NULL結合列に戻ってくることがあることがわかりました。結合列にあるレコードを除外するために where 句を入れましたが、NULLまだこれらのレコードが表示されています。

結合列にSQLがあるレコードを除外するには、以下で何を変更する必要がありますか?NULL

select
folders.FolderId,
folders.lastUpdated,
folder.FolderName,
folder.FolderParentID
from dbo.xsdl_Folder folder
left join dbo.Folders folders
on folder.FolderID = folders.FolderID
where folder.FolderID is not null;
4

1 に答える 1

5

FolderId が NULL に戻り、Folder テーブルからすべてのデータを取得し、Folders テーブルから一致するレコードのみを取得する場合は、クエリを変更して、フォルダーの代わりに folder.FolderId を使用する必要があるようです。 SELECT ステートメントの FolderId:

select
   folder.FolderId,
   folders.lastUpdated,
   folder.FolderName,
   folder.FolderParentID
from dbo.xsdl_Folder folder
   left join dbo.Folders folders
      on folder.FolderID = folders.FolderID

または、結果からすべての NULL 値を削除することを検討している場合は、 を使用せずに を使用LEFT JOINしますINNER JOIN

select
   folders.FolderId,
   folders.lastUpdated,
   folder.FolderName,
   folder.FolderParentID
from dbo.xsdl_Folder folder
   inner join dbo.Folders folders
      on folder.FolderID = folders.FolderID

の目的はLEFT JOIN、2 番目のテーブル (この場合は dbo.Folders) から NULL 値を返すことです。

于 2013-02-19T19:18:40.987 に答える