RuleId |
SR0010 |
カテゴリ |
Microsoft.Design |
互換性に影響する変更点 |
なし |
原因
テーブルおよびビューの間の 1 つ以上の結合で、現在の構文の代わりに今後サポートされない構文 (WHERE 句の =、*=、=* など) が使用されています。
規則の説明
今後サポートされない構文を使用する結合は、次の 2 つのカテゴリに分類されます。
内部結合
内部結合の場合、結合する列内の値は =、<、>= などの比較演算子を使用して比較します。 内部結合では、各テーブルの少なくとも 1 つの行が結合条件を満たす場合にのみ行が返されます。外部結合
外部結合では、すべての行が WHERE 検索条件または HAVING 検索条件を満たす場合にのみ、FROM 句に指定された少なくとも 1 つのテーブルまたはビューのすべての行が返されます。 *= または =* を使用して外部結合を指定すると、今後サポートされない構文を使用することになります。
違反の修正方法
内部結合の違反を修正するには、このトピックの後の例に示すように、INNER JOIN 構文を使用します。 詳細については、Microsoft Web サイトの「内部結合の使用」を参照してください。
外部結合の違反を修正するには、このトピックの後の例に示すように、適切な OUTER JOIN 構文を使用します。 次のようなオプションがあります。
LEFT OUTER JOIN または LEFT JOIN
RIGHT OUTER JOIN または RIGHT JOIN
メモ :
Transact-SQL (T-SQL) では FULL OUTER JOIN および FULL JOIN がサポートされますが、この種類の結合には前のような構文はありません。
詳細については、Microsoft Web サイトの「外部結合の使用」を参照してください。
警告を抑制する状況
この警告は抑制しないでください。 今後サポートされない構文は SQL Server の将来のリリースでは動作しない可能性があるので、すべてのインスタンスを修正することをお勧めします。
使用例
オプションの 6 つの例を次に示します。
例 1 は、内部結合の今後サポートされない構文を示します。
例 2 は、例 1 を更新して現在の構文を使用する方法を示します。
例 3 は、左外部結合の今後サポートされない構文を示します。
例 4 は、例 2 を更新して現在の構文を使用する方法を示します。
例 5 は、右外部結合の今後サポートされない構文を示します。
例 6 は、例 5 を更新して現在の構文を使用する方法を示します。
-- Example 1: Deprecated syntax for an inner join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] T2, [dbo].[Table1] T1
WHERE [T1].[ID] = [T2].[ID]
-- Example 2: Current syntax for an inner join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] AS T2
INNER JOIN [dbo].[Table1] as T1
ON [T2].[ID] = [T2].[ID]
-- Example 3: Deprecated syntax for a left outer join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] T2, [dbo].[Table1] T1
WHERE [T1].[ID] *= [T2].[ID]
-- Example 4: Fixed syntax for a left outer join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] AS T2
LEFT OUTER JOIN [dbo].[Table1] as T1
ON [T2].[ID] = [T2].[ID]
-- Example 5: Deprecated syntax for a right outer join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] T2, [dbo].[Table1] T1
WHERE [T1].[ID] =* [T2].[ID]
-- Example 6: Fixed syntax for a right outer join
SELECT [T2].[c3], [T1].[c3]
FROM [dbo].[Table2] AS T2
RIGHT OUTER JOIN [dbo].[Table1] as T1
ON [T2].[ID] = [T2].[ID]