• ベストアンサー
  • 暇なときにでも

count(1)とcount(*)の違い

初心者です。 以下のSQL文の違い及びcount(1)の1が何を表しているのか 教えて頂けないでしょうか? select count(*) from table select count(1) from table また、参考しやすいサイト等ありましたら教えて頂けないでしょうか?

noname#52885
noname#52885

共感・応援の気持ちを伝えよう!

  • Oracle
  • 回答数2
  • 閲覧数20754
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

COUNT(*)はNULLを含む件数 COUNT(expr)とCOUNT(ALL expr)はexpr列のNULLが含まない件数 COUNT(DISTINCT expr) expr列の種類(null以外) です。 たまにcount(1)の記述を確かに見受けます。 これは「select 1 from <TABLE名>」でカウントした結果と同じです。 (つまり、count(*)と同じ件数になるはず) #ためしにCOUNT(DISTINCT 1)とかすると1になるはずです #1番目の列ではないはず

共感・感謝の気持ちを伝えよう!

質問者からのお礼

大変参考になりました、ありがとうございました。

その他の回答 (1)

  • 回答No.1
  • S31Z
  • ベストアンサー率55% (5/9)

Count(1)はテーブル項目1番目の項目がNULLでない件数 Count(*)はテーブル内の件数 だったと思います。

参考URL:
http://www.sqlpowerpage.co.jp/

共感・感謝の気持ちを伝えよう!

質問者からのお礼

大変参考になりました、ありがとうございました。

関連するQ&A

  • count(*)のcountをとりたい

    現在、以下のようなテーブルを扱っているのですが、 +---------+ |accountid| +---------+ |   999| |   999| |   638| |   638| |   638| |   999| |   999| |   638| +---------+ を、ユニークな件数でとろうとしています。 現在は > select count(*) from TABLE group by accountid; +----------+ | count(*)| +----------+ |     4| |     4| +----------+ 2 rows in set (0.00 sec) などとして、「2 rows in set」を読むと言う方法なのですが、それだと人の手を介さないといけないのでどうにか出力結果をダイレクトに取得したいのです。 SQLサーバで使えるらしい select count(*) from (select count(*) from TABLE group by accountid) as AA; と言うSQL文を使っても無理だったので、どなたか方法をご存じないでしょうか???

    • ベストアンサー
    • MySQL
  • COUNT(DISTINCT *)がエラーになる理由を教えてください

    以下のSQL文がエラーとなるのはなぜですか? SELECT COUNT(DISTINCT *) FROM 社員 SELECT DISTINCT * FROM 社員 ならエラーにならないのにどうしてでしょうか

  • COUNTの使い方

    MySQL4.0.26とPHPを使ってとあるシステムを構築しています。 AとBというテーブルがあって、それぞれのテーブルに登録してあるレコード数の合計を求めたいのですが、こういう場合はできるのでしょうか? SELECT count(*) FROM テーブルAでテーブルAのレコード数は求められますが、SELECT COUNT(*) FROM テーブルA、テーブルBとするとおかしな件数になってしまいます。 できれば一つのクエリで処理したいと思っているのですが。 初心者的質問ですいません。宜しくお願いします。

  • COUNT(*)の使い方

    COUNT(*)の使い方が分からないので質問します。 直接のSQLでCOUNT(*)を使ってレコード数を表示させることはできましたが PHPでのSQLではCOUNT(*)をPHPのソースの変数に代入する方法が分かりません。 $sql = 'SELECT ip, COUNT(*) FROM webdb'; $ret = mysql_query($sql); $rowval = mysql_fetch_row($ret); この場合、$rowval[1] がテーブルwebdbのレコード数だと 思いましたが、間違っているところはございませんか?

    • ベストアンサー
    • MySQL
  • DISTINCT + COUNT

    みなさんこんにちは。 以下のようなSQL文のCOUNT関数を作りたいのですが、 うまい手法がわからず困っています。 SELECT DISTINCT Ta.会員ID, Tb.品番 FROM TABLE_A AS Ta LEFT JOIN TABLE_B AS Tb ON Ta.ID = Tb.ID ↑こいつのCOUNTですが、単純に SELECT COUNT(DISTINCT Ta.会員ID, Tb.品番) ~ とやるとエラーになってしまいます。 どうやってやればカウントできるのでしょうか? すごく初歩的なことだと思いますが、 ご助言お願いいたします。

  • SQLのcount()とgroup by

    以下のようなテーブルがあったとき、 tbl1 id | score 1 | 100 1 | 200 1 | 300 2 | 200 2 | 100 3 | 300 3 | 400 3 | 500 3 | 600 idでまとめて個数を出すとすると、 SELECT count(*) FROM tbl1 group by id とすれば count(*) 3 2 4 と結果が返ってきますが、この結果にidを足して id | count(*) 1 | 3 2 | 2 3 | 4 というようなSQLはどうやって書けばいいのでしょうか? MySQLでは、 SELECT id, count(*) FROM tbl1 group by id と書けるのですが、これは標準的なSQLではNGなそうなので、気になって質問しました。 よろしくお願いします。

  • MySQLにてCOUNTした値を更にCOUNT

    MySQLにてCOUNTした値を、更にCOUNTする事を1回のSQLにて実行する事は可能でしょうか? ※2回のSQL、プログラミングを介する、EXCELで再集計する等でならCOUNTのCOUNTは求められるのですが…1回のSQLでの回答お願いします。 ユーザーIDと課金額のカラムからなる、以下のようなテーブルがあるとします。 buyテーブル user_id,coin 1,100 5,100 10,200 5,200 5,200 17,100 1,100 2,200 23,500 ユーザー毎の課金回数は下記にて求められますが、 SELECT user_id,COUNT(coin) FROM buy GROUP BY id user_id,count(coin) 1,2 2,1 5,3 10,1 17,1 23,1 count(coin)毎の人数というのはどのように求めればいいでしょうか? いわば下記のような集計結果が理想です。 ※このような結果を1回のSQLにて出力するSQLをズバリ今回の例に沿って知りたいです。 count(coin),count(count(coin)) 1,4 2,1 3,1 ■環境 Apache2 MySQL5 PHP5 ご教授よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 複数テーブルにわたるCOUNT

    複数のテーブルで検索条件が当てはまった行を検索し、 その総行数を得たいのですが、 以下のSQL文ではあさっての数値が出てしまいます。 構文が間違っているのでしょうか。 (MySQLを使っています) SELECT Count(*) FROM テーブル1,テーブル2,テーブル3  WHERE (テーブル1.列1 Like 検索文字      or テーブル2.列2 Like 検索文字      or テーブル3.列2 Like 検索文字; どなたか教えてください。よろしくお願いします。

    • ベストアンサー
    • MySQL
  • count(*)

    countの使い方で、 select score, count(*) from mydb group by score; のように使う場合に、()の中に*ではなくて数字を入れても結果は同じでした。 数字を入れたサンプルソースは見たことがないのですが、あのかっこの中は*以外を使うことはありますか? select score, count(*) from mydb group by score which count(*) > 3; というのをやりたい場合、正しいSQLはどうなりますか?

    • ベストアンサー
    • MySQL
  • 動的SQLのCOUNTのとり方

    動的SQLで、DBの件数を取得したいのですが、 うまく取得できず困っています。 教えてください! 以下の様に、記述しているのですが取り方間違っていますか? EXEC SQL EXECUTE statment INTO :CNTNUM; PREPEAした、statmentには SELECT COUNT(*) FROM テーブル名 where kbn = 3; と、ごくごく普通のSELECT COUNT文です。 cnt_numは、int型のホスト変数で宣言しています。 デバックしながら実行すると、cnt_numの値は初期化した時の 0のままです。実際取得した件数が0件なのかもと思い 初期化時に3を代入して実行したら、やはり値は3でした。 なので、件数が取得出来ていないようです。 オラクルエラーにもならず、次の処理へ流れていってしまいます。 知っている方、教えてください。