【问题标题】:Multi select on same database with different conditions在具有不同条件的同一数据库上进行多选
【发布时间】:2017-04-09 19:24:20
【问题描述】:

我有分页,我应该调用数据库两次!
这意味着我应该打电话:

从用户中选择 COUNT(users_id)

获取所有数据库的rowCount
在另一个数据库中获取我有:

SELECT * FROM users ORDER BY users_id ASC LIMIT 1, 2

用于创建分页
无论如何创建一个数据库调用并获得相同的结果?
我试试这个:

SELECT COUNT(users_id),* FROM users ORDER BY users_id ASC LIMIT 1, 2

但是这个,只调用 2 (count users_id) 并打破了分页:(

感谢并为我糟糕的英语感到抱歉。

【问题讨论】:

    标签: php mysql pagination


    【解决方案1】:

    您可以通过 2 个查询获得此信息:

    1) 首先使用 LIMIT 和 OPTION SQL_CALC_FOUND_ROWS

    获取结果

    2) 获取没有 LIMIT 的行数

    SELECT SQL_CALC_FOUND_ROWS t.* FROM yourTable 1 LIMIT 2;
    SELECT FOUND_ROWS(); 
    

    样本

    mysql> SELECT SQL_CALC_FOUND_ROWS t.* FROM yourTable t LIMIT 2;
    +-----+------------+
    | id  | toDate     |
    +-----+------------+
    | 111 | 2017-03-02 |
    | 111 | 2017-03-20 |
    +-----+------------+
    2 rows in set (0,00 sec)
    
    mysql> SELECT FOUND_ROWS();
    +--------------+
    | FOUND_ROWS() |
    +--------------+
    |            4 |
    +--------------+
    1 row in set (0,00 sec)
    
    mysql>
    

    【讨论】:

    • 这是真的,但我怎样才能得到 FOUND_ROWS ? ,比如 $row["users_id"]
    • 非常感谢它的工作,我的问题解决了:* :* :* :* :***************
    • $total = $db_con->query('SELECT FOUND_ROWS();')->fetch(PDO::FETCH_COLUMN);
    【解决方案2】:

    不,这是不可能的,因为它返回不同的结果集 - 第一个查询返回带有 int 的单列结果,另一个查询返回来自用户的所有列。

    您需要为此执行两个单独的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多