- ベストアンサー
SQLのSelect Countについて
たびたびお世話になります。 以下のSQLを実行したらエラーになりましたが原因がわかりません。 select count(A), A from TableA where A > 0 and B is not null; 同時に該当するデータ件数とその項目を取得したかったのですが、なぜ上記のSQLがエラーになるのかわかりません。 教えてください、お願いします_(._.)_
- みんなの回答 (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の値毎の件数になります。
その他の回答 (2)
- lucky-jam
- ベストアンサー率16% (3/18)
GROUP BYを付けてみてはどうですか? where句の後に 「group by A」 とすれば動くのではないでしょうか。
お礼
ありがとうございました。 さっそくやってみます。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
group byについて調べましょう。 select count(A), A from TableA where A > 0 and B is not null group by A;
お礼
ありがとうございました。 3件とも回答がとっても早くてビックリです。 しばらくSQLを使わないでいたら結構忘れてしまってしまったらしく、 GroupByの使い方もわかんなくなっていました。また勉強しなおします。 次点を3人のうちお二方にあげたかったのですが、できないようなので今回は良回答のみにしました。
お礼
ありがとうございます。 頭がごっちゃになって質問しましたが、mfukuさんの説明を読んでわかりました。