【问题标题】:how to use SQL_CALC_FOUND_ROWS and FOUND_ROWS() in same query如何在同一查询中使用 SQL_CALC_FOUND_ROWS 和 FOUND_ROWS()
【发布时间】:2016-07-08 10:11:36
【问题描述】:

我正在使用 MySql,我有一种情况,我想从表中返回所有行的计数,并通过在同一查询中使用限制返回一些行。我尝试了很多事情,但我无法做到。请帮帮我

假设我的桌子是:学生

id | name | category |  gender
1    'A'    'Just'      'male'
2    'B'    'Just'      'Female'
3    'C'    'Just'      'male'
4    'D'    'Just'      'Female'
5    'E'    'Just'      'male'

输出

id | name | category | gender | rcount
1    'A'    'Just'      'male'   5
2    'B'    'Just'      'Female' 5
3    'C'    'Just'      'male'   5

我想要单个查询的上述输出,请帮助我?

【问题讨论】:

  • 不可能在单个语句中同时执行两个 mysql 查询,因为不能在单个语句中运行 2 个 mysql 查询,期望编写子查询,这将再次被视为 2 个查询
  • 我也尝试使用表别名编写子查询,但它没有给出正确的输出。你可以试试
  • 请原谅我之前的评论,您首先必须执行 SQL_CALC_FOUND_ROWS,然后您可以执行 SELECT FOUND_ROWS() 这是一种方法,另一种方法是您可以避免 FOUND_ROWS() 并使用简单的 count(*)所以这可能会让你们俩都得到一个查询
  • np Rupal,非常感谢您的快速回复。您能否提供(在单个查询中使用 count(*) 编写查询)您的第二个选项。我已经尝试过了,但在这种情况下,计数是正确的,但我得到的只有一行是错误的。
  • 感谢 Rupal,您编写的查询与 P.Salmon 之前建议的相同。我不能用这个

标签: mysql sql


【解决方案1】:

@Krishna 在下面找到查询:

select SQL_CALC_FOUND_ROWS *, (select count(*) from student) as rcount from student limit 3;

【讨论】:

    【解决方案2】:
    /*
    create table student (id int, name char(2), category char(4),  gender char(6));
    insert into student values
    (1 ,   'A' ,   'Just'  ,    'male'),
    (2 ,   'B' ,   'Just'  ,    'Female'),
    (3 ,   'C' ,   'Just'  ,    'male'),
    (4 ,   'D' ,   'Just'  ,    'Female'),
    (5 ,   'E' ,   'Just'  ,    'male');
    */
    select  *,(select count(*) from student) as rcount
    from    student
    limit 3
    

    【讨论】:

    • 感谢 P.Salmon,您的查询输出是正确的,但我不想两次执行相同的查询
    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 2012-03-06
    • 1970-01-01
    • 2017-03-10
    • 2010-10-11
    • 2017-07-11
    • 2018-05-04
    • 1970-01-01
    相关资源
    最近更新 更多