【问题标题】:SQL Query - Subquery returns more than one rowSQL 查询 - 子查询返回多于一行
【发布时间】:2012-05-04 08:18:18
【问题描述】:

表:

laterecords
-----------
studentid - varchar
latetime - datetime
reason - varchar

我的查询:

SELECT laterecords.studentid,
laterecords.latetime,
laterecords.reason,
( SELECT Count(laterecords.studentid) FROM laterecords 
      GROUP BY laterecords.studentid ) AS late_count 
FROM laterecords

我收到“MySQL Subquery Returns more than one row”错误。

我知道此查询的解决方法是使用以下查询:

SELECT laterecords.studentid,
laterecords.latetime,
laterecords.reason 
FROM laterecords

然后使用 php 循环查看结果并执行以下查询以获取 late_count 并将其回显:

SELECT Count(laterecords.studentid) AS late_count FROM laterecords 

但我认为可能有更好的解决方案?

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    简单的解决方法是在子查询中添加WHERE 子句:

    SELECT
        studentid,
        latetime,
        reason,
        (SELECT COUNT(*)
         FROM laterecords AS B
         WHERE A.studentid = B.student.id) AS late_count 
    FROM laterecords AS A
    

    更好的选择(就性能而言)是使用连接:

    SELECT
        A.studentid,
        A.latetime,
        A.reason,
        B.total
    FROM laterecords AS A
    JOIN 
    (
        SELECT studentid, COUNT(*) AS total
        FROM laterecords 
        GROUP BY studentid
    ) AS B
    ON A.studentid = B.studentid
    

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      相关资源
      最近更新 更多