簡體   English   中英

mysql-子查詢返回多個行錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM