-1

私はこれで完全に迷っています。サブクエリが複数の行を返すというエラーを受け取り続けます。何か案は?

SELECT 
    m.MealID, m.Title, m.SeoUrl, m.Likes, 
    (SELECT Photo FROM Recipe WHERE RecipeID=
        (SELECT r1.RecipeID FROM Ref_Meal r1 
         LEFT OUTER JOIN Ref_Meal r2 ON r1.MealID=r2.MealID AND r1.Sort > r2.Sort 
         WHERE r1.MealID=m.MealID AND r2.MealID IS NULL)) as Photo, 
    (SELECT MAX(rs.Skill) FROM Recipe rs JOIN Ref_Meal rms ON rms.RecipeID=rs.RecipeID WHERE rms.MealID=m.MealID) as Skill 
FROM Meal m 
JOIN MemberMealBookmark b ON b.MealID=m.MealID 
WHERE b.MemberID=4 ORDER BY Title 
4

1 に答える 1

0

スキーマなしでこのクエリをデバッグするのは非常に困難ですが、WHERE のこの条件を見てください。

WHERE RecipeID=
        (SELECT r1.RecipeID FROM Ref_Meal r1 
         LEFT OUTER JOIN Ref_Meal r2 ON r1.MealID=r2.MealID AND r1.Sort > r2.Sort 
         WHERE r1.MealID=m.MealID AND r2.MealID IS NULL)) as Photo, 

を使用しているため、このエラーが発生していますEQUALが、クエリは複数の行を返します。通常、これに遭遇するのは、サブクエリにバグがあり、結果が 1 つだけだと思っていたのに、さらに多くの結果があるためです。そのクエリをコピーして貼り付けて実行すると、複数の行が返されます。

単一の行を返すようにサブクエリを修正するか、EQUAL符号をINに変更すると、複数の結果が処理されます。

于 2012-05-02T09:20:04.967 に答える