MySQL - COUNTとLIMIT関数を併用する

私は14のエントリでテーブル 'Labs'を持っています。

SELECT COUNT(Labs.sid)FROM Labs LIMIT 0、18446744073709551615 というクエリは "14"を返します。

しかし、 SELECT COUNT(Labs.sid)FROM Labs LIMIT 1、18446744073709551615 というクエリは "0"を返します。実際には、LIMITローオフセット値2、3、4などを設定すると、 "0"が返されます。

どうしてこれなの? mysqlを使って指定されたオフセットの後に行の数を決定する方法はありますか?

FWIW MySQL 5.5.9とInnoDBデータベースエンジンを使用しています。

3

2 答え

このカウントは、カウントが実行された後に適用されます。

代わりにこれを試してください:

SELECT COUNT(sid) FROM
(
    SELECT sid FROM Labs LIMIT 2, 18446744073709551615
) T1

ORDER BYを使用しないでLIMITを使用することは悪い考えです。なぜなら、順序が一貫していることを保証できないため、毎回異なる行を選択できるようにすることです( sid ヌル)。

4
追加された
完璧な感謝!
追加された 著者 Max Hartshorn,

なぜあなたは COUNT(*)からオフセットを減算しないのですか?

SELECT COUNT(Labs.sid) - 1 FROM ...
2
追加された
あなたが本当に巧みになりたいのであれば、これがあなたに否定的な結果を与えるかどうかをチェックすることができ、その場合は代わりに0を返します。
追加された 著者 Hammerite,
Labs.sid がNULLの場合は、これとは異なる結果になります。
追加された 著者 Mark Byers,