簡體   English   中英

使用Count時,Mysql只返回一行

[英]Mysql returns only one row when using Count

好吧,我剛剛發現了一種我從未見過的奇怪的行為,或者沒有注意到。

我正在使用此查詢:

  SELECT *, 
         COUNT(*) AS pages 
    FROM notis 
   WHERE cid = 20 
ORDER BY nid DESC 
   LIMIT 0, 3

...閱讀3個項目,但在這樣做時我想得到總行數。

問題是......

...當我使用count時,查詢只返回一行,但是如果我刪除COUNT(*) AS pages - 我得到了3行,正如我想的那樣。 顯然,我在這里遺漏了一些東西。

是的,count是一個聚合運算符,只返回一行(沒有group by子句)

也許做兩個單獨的查詢? 讓行返回數據和總行數是沒有意義的,因為該數據不屬於一起。

如果你真的想要它,你可以這樣做:

SELECT *, (select count(*) FROM notis WHERE cid=20) AS count FROM notis WHERE cid=20 ORDER BY nid DESC LIMIT 0,3

或這個:

SELECT N.*, C.total from notis N join (select count(*) total FROM notis WHERE cid=20) C WHERE cid=20) AS count FROM notis WHERE cid=20 ORDER BY nid DESC LIMIT 0,3

根據您的SQL方言,嵌套表達式的差異。

使用沒有 GROUP BY的聚合函數將始終返回一行,無論如何。 如果要返回多行,則必須使用GROUP BY。

請注意,在大多數RDBMS上,這樣的查詢會失敗,因為它沒有意義。

這是低效的,但會起作用:

SELECT 
   *,
   (SELECT COUNT(*) FROM notis WHERE cid=20) AS pages
FROM notis 
WHERE cid=20 
ORDER BY nid DESC 
LIMIT 0,3

暫無
暫無

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

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