2012-05-01 14 views
-1

私はこれを完全に忘れてしまった。エラーサブクエリが複数の行を返すのを受け取り続けます。何か案は?MySQLのエラーがひどい:サブクエリが複数の行を返す

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 
+0

クエリがすべて1行になるように再フォーマットする必要があります。あなたがしようとしていることを明確にしない限り、それを並べ替えることはできません。 – Cylindric

+0

各サブクエリを手動で1つずつ実行する場合、それらのいずれかが複数の行を返しますか? – Cylindric

+1

'Photo'カラムを定義するサブサブクエリの' WHERE'条件は、 'MealID'がそのサブクエリー全体で' NULL'になり、 'm.MealID'でマッチするため、全体的な親クエリも。これはあなたが意図したものですか? – eggyal

答えて

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つ以上の行を返します。 通常、これに遭遇したときは、サブクエリにバグがあり、結果が1つしかないと想定していたためですが、それ以上のものがあります。 そのクエリをコピーして貼り付けて実行すると、複数の行が返されます。

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

関連する問題