• ベストアンサー

SQLのSelect Countについて

たびたびお世話になります。 以下のSQLを実行したらエラーになりましたが原因がわかりません。 select count(A), A from TableA where A > 0 and B is not null; 同時に該当するデータ件数とその項目を取得したかったのですが、なぜ上記のSQLがエラーになるのかわかりません。 教えてください、お願いします_(._.)_

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

  • ベストアンサー
  • mfuku
  • ベストアンサー率50% (173/345)
回答No.3

select count(A), A のうち、 count(A)で得られるレコードは1件ですね。 一方、A により得られるレコードは複数件(count(A)の結果)ですね。 例えば、TableAテーブルに条件に合致するデータが、3件(Aの値:1、2、3)あった場合、 count(A)→3(1レコード) A→1、2、3(3レコード) となります。 これは明らかに選択されるレコードに不一致が起こることは理解できますよね? select count(A), A from TableA where A > 0 and B is not null group by A; とすればOKだと思いますが、あくまでもcount(A)はAの値毎の件数になります。

noname#32133
質問者

お礼

ありがとうございます。 頭がごっちゃになって質問しましたが、mfukuさんの説明を読んでわかりました。

その他の回答 (2)

  • lucky-jam
  • ベストアンサー率16% (3/18)
回答No.2

GROUP BYを付けてみてはどうですか? where句の後に 「group by A」 とすれば動くのではないでしょうか。

noname#32133
質問者

お礼

ありがとうございました。 さっそくやってみます。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

group byについて調べましょう。 select count(A), A from TableA where A > 0 and B is not null group by A;

noname#32133
質問者

お礼

ありがとうございました。 3件とも回答がとっても早くてビックリです。 しばらくSQLを使わないでいたら結構忘れてしまってしまったらしく、 GroupByの使い方もわかんなくなっていました。また勉強しなおします。 次点を3人のうちお二方にあげたかったのですが、できないようなので今回は良回答のみにしました。

関連するQ&A