簡體   English   中英

獲取表的總行數

[英]Get total rows count of table

我想讓所有行數都在我的sql中。

表格的前2列如下所示

在此處輸入圖片說明

我的功能看起來像這樣

            $limit=2;
            $sql = "SELECT id,COUNT(*),dt,title,content FROM news ORDER BY dt DESC LIMIT " . $limit;
            $stmt = $this->db->prepare($sql);
            $stmt->execute();
            $stmt->bind_result($id, $total, $datetime, $title, $content);
            $stmt->store_result();
            $count = $stmt->num_rows;
            if ($count > 0) {
                while ($stmt->fetch()) {

內循環中,我得到$total確切值,但MySQL只選擇1行-id為1的行。( $count也為1)

試過這個SQL

SELECT id,dt,title,content FROM news ORDER BY dt DESC LIMIT 2

一切順利。

為什么在第一種情況下它僅選擇1行? 如何解決此問題?

前表我有5行。 我想使用所有字段獲取其中的2個,並通過一個查詢獲取所有行數(在這種情況下為5)。

如果要使用COUNT(*)請嘗試添加GROUP BY dt COUNT(*)盡管不確定為什么要使用它)。

編輯

很好,如果您堅持要在一個電話中這樣做,請按以下步驟操作:

$sql = "SELECT id,(SELECT COUNT(id) FROM news) as total,dt,title,content FROM news ORDER BY dt DESC LIMIT " . $limit;

刪除COUNT(*)。 如果您只保留其中一行,則只會得到1行。

這可能是由於變量$ limit設置為1或未設置,而mysql默認為1引起的。嘗試將第一行更改為

$sql = "SELECT id,COUNT(*),dt,title,content FROM news ORDER BY dt DESC";

編輯

改成:

$sql = "SELECT SQL_CALC_FOUND_ROWS,id,dt,title,content FROM news ORDER BY dt DESC LIMIT " . $limit;

然后使用第二個查詢

SELECT FOUND_ROWS( )

獲取與查詢匹配的行數

完全是硬件問題的根源……為什么除了教授的遲鈍方法之外,為一個簡單的問題增加復雜性,您又不想運行兩個查詢?

無論如何....在這里:

 SELECT id, (SELECT COUNT(*) FROM news) AS row_count, dt, title, content FROM news ORDER BY dt DESC LIMIT 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM