代码之家  ›  专栏  ›  技术社区  ›  Abhishek Singh

mysql查询中的两条select语句

  •  -1
  • Abhishek Singh  · 技术社区  · 6 年前

    我有一张叫做“老师”的表格,上面有所有老师的详细信息,包括名字、姓氏、电子邮件、电话号码等字段 我想知道老师的人数和所有细节,所以我写了一个这样的查询

    SELECT
         ( SELECT COUNT(*) AS count 
             FROM Teacher 
            WHERE is_disabled = false
         ) total_count
         , id
         , Teacher.*
      FROM Teacher 
     WHERE is_disabled = 0;
    

    它提供了正确的输出,但是当我尝试添加限制和偏移时,计数会像

    SELECT
         ( SELECT COUNT(*) AS count 
            FROM Teacher 
           WHERE is_disabled = false
         ) as total_count
         , Teacher.*
      FROM Teacher 
     WHERE is_disabled = 0 
     LIMIT 10 
    OFFSET 10;
    

    所以,如果我的数据库中有9个老师,它不会显示任何结果,但我希望每次都得到9个总计数,即使没有任何老师限制和偏移。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Ctznkane525    6 年前

    你可以这样做:

    SELECT
         t.firstname, t.lastname, t.phonenumber, t.emailaddress, 0 is_count, 0 total_count
      FROM Teacher T
     WHERE is_disabled = 0 
     LIMIT 10 
    OFFSET 10
    UNION
    SELECT
         '','','','', 1, ( SELECT COUNT(*) AS count 
            FROM Teacher 
           WHERE is_disabled = false
         )
    ;
    

        2
  •  1
  •   Gordon Linoff    6 年前

    SELECT (SELECT COUNT(*) AS count 
            FROM Teacher 
            WHERE is_disabled = 0
            LIMIT 10  OFFSET 10
           ) as total_count,
           t.*
    FROM Teacher t
    WHERE t.is_disabled = 0 
    LIMIT 10  OFFSET 10;
    

    SELECT t.*, @rn as total_count
    FROM (SELECT t.*, @rn := @rn + 1)
          FROM Teacher t CROSS JOIN
               (SELECT @rn := 0) params
          WHERE t.is_disabled = 0 
          LIMIT 10  OFFSET 10
         ) t;