【问题标题】:SQL database #1242 - Subquery returns more than 1 rowSQL 数据库 #1242 - 子查询返回多于 1 行
【发布时间】:2015-04-13 15:49:11
【问题描述】:

我有错误

1242 - 子查询返回多于 1 行

(SELECT COUNT(*) FROM attendance GROUP BY stu_ID   ) /(SELECT COUNT(if(`attstatus`='P', `attstatus`,NULL)) 
FROM attendance  GROUP BY stu_ID

我该如何解决它,任何其他解决方案都可以显示attstatus='P' 的百分比?

SELECT stu_ID,stu_name,

GROUP_CONCAT(if(class_no="lec_1", `attstatus`, NULL)) AS 'Lecturer 1',

GROUP_CONCAT(if(class_no="lec_2", `attstatus`, NULL)) AS 'Lecturer 2',

COUNT(if(`attstatus`='P', `attstatus`,NULL)) AS 'total p',

COUNT(if(`attstatus`='A', `attstatus`, NULL)) AS 'total a',

COUNT(*) as dayTotal,
(SELECT COUNT(*) FROM attendance GROUP BY stu_ID   ) /(SELECT COUNT(if(`attstatus`='P', `attstatus`,NULL)) FROM attendance  GROUP BY stu_ID) 



FROM attendance 

WHERE session_ID=1

GROUP BY stu_ID,stu_name;

【问题讨论】:

  • 也许您应该将这些问题作为单独的问题发布(如果有意义,请提供指向其他问题的链接)。对于第一个问题,似乎第一个GROUP BY 导致了问题。如果您描述您想要实现的目标,这可能会有所帮助。
  • @Gábor Bakos 很抱歉..由 GROUP BY..引起的..i 将使用总 p/daytotal 计算总 p 的百分比

标签: database percentage mysql-error-1242


【解决方案1】:

尝试添加到您的 sql 中:LIMIT 1
它只会返回一行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2020-08-28
    • 1970-01-01
    • 2023-01-07
    相关资源
    最近更新 更多