【问题标题】:MySQL said: Documentation- Subquery returns more than 1 rowMySQL 说:Documentation-Subquery 返回超过 1 行
【发布时间】:2020-12-11 04:49:41
【问题描述】:

以下呈现正确的输出。

(
SELECT
   answer_data 
FROM
   wp_learndash_pro_quiz_statistic_ref b, wp_learndash_pro_quiz_statistic bb 
WHERE
   wp_users.id = b.user_id 
   AND b.statistic_ref_id = bb.statistic_ref_id 
   AND bb.question_id = 82
   AND b.quiz_id = 9) AS "xyz"

但是,当我将 bb.question_id = 82 更改为任何其他 question_id(即 56 是另一个问题)时,我收到此错误:

" MySQL 说:文档 #1242 - 子查询返回多于 1 行”

知道我做错了什么吗?

【问题讨论】:

  • 将其作为单个查询执行(删除括号和最终别名)并计算行数。
  • 你能分享完整的查询吗?好像您正在另一个查询中使用上述查询的结果。
  • 如果您只想从子查询中接收一行,您是否尝试在最后执行limit 1
  • 错误消息很清楚,告诉您需要返回单个标量值的子查询返回多行。要么是逻辑错误,要么需要更改为只返回一个值,可能使用LIMIT
  • 这能回答你的问题吗? subquery returns more than 1 row

标签: mysql sql


【解决方案1】:

这仅仅意味着有多个记录可用于bb.question_id = 82,并且您必须在SELECT 子句中使用它,或者在WHERE 子句中使用= 运算符,其中需要单个值。

  • 您可以在 answer_data 上使用聚合函数
  • 或者您可以使用LIMIT 1 从多条记录中仅获取一条记录

使用这个:

(SELECT MAX(answer_data) 
  FROM wp_learndash_pro_quiz_statistic_ref b 
  JOIN wp_learndash_pro_quiz_statistic bb 
    ON wp_users.id = b.user_id 
   AND b.statistic_ref_id = bb.statistic_ref_id 
 WHERE bb.question_id = 82
   AND b.quiz_id = 9) AS "xyz"

每日提示:始终使用标准 ANSI 联接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多