【问题标题】:Get number of records with SQL while using LIMIT and OFFSET使用 LIMIT 和 OFFSET 时使用 SQL 获取记录数
【发布时间】:2019-05-09 14:17:25
【问题描述】:

我正在尝试将页面实现到我的网页中。我已经得到它,以便用户可以将他们想要的页码放入他们想要访问的 url 栏中。为此,我在 URL 栏中使用了该数字,并将其乘以 10 以获得 SQL 语句中的 OFFSET 参数,从而为每个页面获取 10 条记录。

但是我需要知道如果我删除了LIMITOFFSET 参数,该SQL 语句可以返回多少条记录。这在 SQL 语句中是否可行,还是我必须从数据库中请求每条记录并计算每页的长度?谢谢。

编辑:

如果我不使用 LIMIT 或 OFFSET,我想要这条语句可以返回的记录数量

SELECT nfc_film.*, nfc_category.name FROM nfc_film
        JOIN nfc_film_category
          ON nfc_film.film_id = nfc_film_category.film_id
        JOIN nfc_category
          ON nfc_category.category_id = nfc_film_category.category_id
        WHERE title
          LIKE :searchterm OR nfc_category.name = :category
        LIMIT 10
        OFFSET :page

【问题讨论】:

  • 您使用的是哪个 dbms? (LIMIT 不是标准 SQL。)
  • SELECT COUNT(*) FROM YourTable; ?
  • @jarlh im 使用 sqlite 数据库和 PHP PDO。
  • 您无法从使用 LIMIT/OFFSET 关键字的同一查询中获取此信息,不...该查询仅返回您要求的记录。您可以像上面引用的 Cid 一样运行 separate 查询,以获取该信息。
  • 记录数最多为LIMIT设置的值

标签: php sql sqlite


【解决方案1】:

要获取当前查询返回的行数,由于您使用 PDO 标记了 php,您可以使用 fetchAll()count()

例如:

$sth = $dbh->prepare("<your query>");
$sth->execute();

$result = $sth->fetchAll();
$numberOfRows = count($result);

要获得表格的总行数,但仍使用LIMIT,您可以

在单独的查询中计算:

SELECT COUNT(*)
FROM nfc_film
JOIN nfc_film_category
ON nfc_film.film_id = nfc_film_category.film_id
JOIN nfc_category
ON nfc_category.category_id = nfc_film_category.category_id
WHERE title LIKE :searchterm OR nfc_category.name = :category;

或者在单个查询中使用GROUP BY(这将防止您使用* 的不良做法)

--                          v------------- Random datas ------------------------v
SELECT COUNT(*) AS "Count", nfc_film.id, nfc_film.name, nfc_film.otherInformation, nfc_category.name FROM nfc_film
JOIN nfc_film_category
ON nfc_film.film_id = nfc_film_category.film_id
JOIN nfc_category
ON nfc_category.category_id = nfc_film_category.category_id
WHERE title
LIKE :searchterm OR nfc_category.name = :category
GROUP BY nfc_film.id, nfc_film.name, nfc_film.otherInformation, nfc_category.name
LIMIT 10
OFFSET :page

【讨论】:

    猜你喜欢
    • 2013-04-03
    • 2019-12-24
    • 2020-10-02
    • 2012-02-12
    • 2015-05-07
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 2012-08-25
    相关资源
    最近更新 更多