-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,但查询返回的不止一行。通常,当您遇到这种情况时,这是因为您的子查询中存在错误,您认为只会有一个结果,但实际上还有更多。复制粘贴该查询并运行它,它将返回不止一行。

修复子查询以返回单行或将EQUAL符号更改为IN,它将处理多个结果。

于 2012-05-02T09:20:04.967 回答