2012-05-01 2 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

한 줄에 모두 나타나지 않도록 쿼리를 다시 포맷해야합니다. 당신이하려고하는 바를 명확하게하지 않는 한 그런 것들을 분류 할 방법이 없습니다. – Cylindric

+0

각 하위 쿼리를 수동으로 하나씩 실행하는 경우 둘 이상의 행을 반환합니까? – Cylindric

+1

'Photo' 칼럼을 정의하는 하위 서브 쿼리에서'WHERE' 조건은 그 하위 쿼리 전체에서'MealID'가'NULL' 인 결과를 낳고,'m.MealID'에서 일치하기 때문에 전체 상위 쿼리도 마찬가지입니다 . 이것이 당신이 의도 한 것입니까? – eggyal

답변

0

그것은 스키마없이이 쿼리를 디버깅하지만,이 상태에서 살펴하는 것은 매우 어렵다 당신의 장소 :

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으로 변경하면 여러 결과가 처리됩니다.

관련 문제