2

メイン テーブルの " " がサブ テーブルcategoryの " " と一致するかどうかをチェックするネストされたクエリを含むストアド プロシージャがあります。categoryしたがって、一致するものが 1 つある場合もあれば、一致しない場合もあります。

一致があり、サブクエリが何かを返す場合は Yes を返し、一致がなく、サブクエリが何も返さない場合は No を返すにはどうすればよいですか?

一般的に機能する次のことを試しましたが、一致する場合のみ、それ以外の場合は何も返しません。

私のSQL(短縮):

SELECT      A.categoryID,
            A.category,
            A.[description],
            (
                SELECT      'Yes' AS subscribed
                FROM        MOC_Categories_Subscribers D
                WHERE       D.category = A.category
                FOR XML PATH(''), ELEMENTS, TYPE
            )
FROM        MOC_Categories A
4

3 に答える 3

4

サブクエリが行を返さない場合、結果は NULL になります。したがって、それを確認する必要があります。SQL Serverでは、関数ISNULLとを使用してこれを行うことができCOALESCEます。使用しているバージョンによって異なります

SELECT A.categoryID,
       A.category,
       A.[description],
       COALESCE((SELECT TOP 1 'Yes'
                 FROM MOC_Categories_Subscribers D
                 WHERE D.category = A.category), 'No') AS Result
FROM MOC_Categories A
于 2014-09-04T10:23:41.873 に答える
2
SELECT      A.categoryID,
            A.category,
            A.[description],
            (
                SELECT      
                case 
                   when count(subscribed) > 0 then 'Yes'
                   else 'No'
                end
                FROM        MOC_Categories_Subscribers D
                WHERE       D.category = A.category
            )
FROM        MOC_Categories A
于 2014-09-04T09:58:18.843 に答える