[英]mysql - Subquery returns more than 1 row error
我的子查詢在某些情況下會返回多個行,而在其他情況下卻不存在問題。 我已經查看了一些建議的問題,但仍然與我的問題不符。 這些示例中的用戶在其子查詢中返回了多個值,沒有放置定界符,或者只是針對他們的情況使用了錯誤的語法。 我將代碼放在下面,因為我不明白問題出在哪里。
SELECT q.id, q.title, (SELECT a.answer FROM v_events_abstracts_answers AS a WHERE a.question_id=q.id AND uniq_id=2013121713133221), q.code
FROM v_events_abstracts_questions AS q
WHERE q.event_id=193
ORDER BY q.ordering, q.id ASC
我不僅在要求“調試”,我想了解這個問題是如何產生的,以供將來參考。
這是您的查詢:
SELECT q.id, q.title,
(SELECT a.answer
FROM v_events_abstracts_answers AS a
WHERE a.question_id=q.id AND uniq_id=2013121713133221
),
q.code
FROM v_events_abstracts_questions AS q
WHERE q.event_id=193
ORDER BY q.ordering, q.id ASC;
關於錯誤消息有什么不清楚的地方? 子查詢:
(SELECT a.answer
FROM v_events_abstracts_answers AS a
WHERE a.question_id=q.id AND uniq_id=2013121713133221
),
返回不止一排。 在允許標量子查詢的上下文中使用此子查詢 。 標量子查詢是一種返回一行一列的子查詢 。 然后將結果視為單個值。
您可以通過聚合或使用limit
來解決此問題。 這是一種方法:
(SELECT group_concat(a.answer)
FROM v_events_abstracts_answers AS a
WHERE a.question_id=q.id AND uniq_id=2013121713133221
) as answers,
避免使用相關子查詢,您可以執行以下操作:-
SELECT q.id, q.title, a.answer, q.code
FROM v_events_abstracts_questions AS q
LEFT OUTER JOIN v_events_abstracts_answers AS a
ON a.question_id = q.id
AND a.uniq_id = 2013121713133221
WHERE q.event_id = 193
ORDER BY q.ordering, q.id ASC
問題是,如果一個問題的唯一ID答案超過1個,那么您如何決定選擇哪個?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.