- ベストアンサー
nullと同じく空白をCountしない方法は?
お世話になります。 mysql 超初心者です。 Count( a) AS b FROM tblで aをCountするのはnull値以外で空白もCountしてしまいます。 これを空白もnull値と同じにCountしない方法はどうするのでしょうか? または空白のみをCountする書き方等あるのでしょうか? 色々調べてもググってもよくわかりませんでした。 初期値のnull値が一回書き込まれたデーターを削除すると 空白になってCount( a) でCountされて困っています。 初心者なのでなるべく具体的な回答をお待ちしています。 どうかよろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- 複数JOINしているとCOUNTが正しく取得できな
LAMP環境で開発をしています。 SQL文でCOUNTを求める際に、まとめて結果を求めようとして上手く行きません。 状況としては以下です。 テーブルdはidをkeyにa,b,c3つのテーブルとjoinしています。 id = 1の場合、テーブルa,b,cにマッチするレコードがそれぞれに4個、1個、0個あります。 ひとつひとつを SELECT COUNT(CASE WHEN a.name IS null THEN 1 ELSE null END) as a_count FROM d INNER JOIN a ON a.id = d.id WHERE d.id = 1 として結果を求めると4,1,0と出るのですが、まとめて SELECT COUNT(CASE WHEN a.name IS null THEN 1 ELSE null END) as a_count, COUNT(CASE WHEN b.name IS null THEN 1 ELSE null END) as b_count, COUNT(CASE WHEN c.name IS null THEN 1 ELSE null END) as c_count FROM d INNER JOIN a ON a.id = d.id INNER JOIN b ON b.id = d.id INNER JOIN c ON c.id = d.id WHERE d.id = 1 とすると28,5,0という値が返されます。 どのように書けば正しい4,1,0を得られるのでしょうか? よろしくお願いします。
- ベストアンサー
- MySQL
- MySQL: 複数テーブルのcount
複数テーブルの総行数(count値)を取得したいのですが、下記だとテーブルA,B,Cの結果が バラバラに出力されてしまいます。 【入力条件】 mysql> select COUNT(*) AS 列ID from テーブルA union all select COUNT(*) AS 列ID from テーブルB union all select COUNT(*) AS 列ID from テーブルC; 【出力結果】 +-----+ | 列_ID | +-----+ | 1 | ←テーブルAの合計:行数 | 2 | ←テーブルBの合計:行数 | 3 | ←テーブルCの合計:行数 +-----+ 総行数:6を一発で取得するには、どのようにしたらよろしいのでしょうか? 大変恐縮ですが、ご教授よろしくお願いいたいます。 <<MySQLのverは5,5です。
- ベストアンサー
- MySQL
- 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なそうなので、気になって質問しました。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- SQLのSelect Countについて
たびたびお世話になります。 以下のSQLを実行したらエラーになりましたが原因がわかりません。 select count(A), A from TableA where A > 0 and B is not null; 同時に該当するデータ件数とその項目を取得したかったのですが、なぜ上記のSQLがエラーになるのかわかりません。 教えてください、お願いします_(._.)_
- ベストアンサー
- その他(データベース)
- SELECT DISTINCTの結果件数をCOUNTする方法
SQL SERVER 2005 EXPRESS のストアドプロシージャで、 SELECT結果の件数を、変数 @count に取得したいのですが DISTINCTの引数が複数あるのが原因なのか、上手くいきません。 目的はテーブル「TBL」から、COMとUSERの組み合わせの リストを抽出し、その件数を取得する事です。 テーブル名:TBL COM USER --------------- 001 A 002 A 003 A 001 B 002 A 003 C 「COMとUSERの組み合わせで、重複するものは取らない」のならば SELECT DISTINCT COM,USER FROM TBL で、下記のような結果が得られます。 COM USER --------------- 001 A 002 A 003 A 001 B 003 C で、この結果件数である「5」を取りたいのですが DECLARE @count int SELECT @count = COUNT(DISTINCT COM,USER) FROM TBL print @count と打っても失敗します。 ( )の括りやCOUNTの位置をいろいろと試したが出来ませんでした。 COUNT DISTINCT(複数項目)が出来ないのならば、 どうすればこの結果の件数を取得できるでしょうか? どうかご教授授くださいませ。よろしくお願いします。
- ベストアンサー
- SQL Server
- mysqlで連結先のテーブルをカウント
mysql php 超初心者です。 mysqlで連結先のテーブルのカウントを取得したいと思っています。 以下のような a_tblと b_tbl があり、 a_tbl の a_index と b_tbl の ab_no を 結合して b_tbl の ab_no のカウント数を 理想結果表に表示したいと思っています。 どう書いたら b_tbl の ab_no をGROUP(?) COUNTして 理想結果表の様にbテーブルのab_noのcount数を表示できるのでしょうか? -a_tbl- a_index | a_data 1 | りんご 2 | 信号 3 | 空 4 | カラス -b_tbl- b_index | ab_no | b_data 1 | 1 | 青 2 | 1 | 赤 3 | 2 | 青 4 | 2 | 赤 5 | 2 | 黄 6 | 3 | 青 7 | 3 | 白 8 | 3 | 黒 9 | 4 | 黒 -理想結果表- a_index |a_data | bテーブルのab_noのcount数 1 | リンゴ | 2 色 2 | 信号 | 3 色 3 | 空 | 3 色 4 | カラス | 1 色 私が見よう見まねで考えた式ですが、やはりこれでは表に2しか出ませんでした。 $sql = "SELECT Count(*) AS cnt FROM b_tbl LEFT JOIN a_tbl ON b_tbl.ab_no = a_tbl.a_index GROUP BY b_tbl.ab_no"; 質問の仕方もよくわからないのでわかりにくいかも知れませんが どうかご教授の程よろしくお願い致します。
- ベストアンサー
- MySQL
- AccessでNULLのデータを判断する方法
ご指導、宜しくお願い致します。 Accessを経由してPostgresのデータベースへ データをインポートしていきたいのですが、 Accessから抽出したデータが空白か空白ではないのかを 判断させたいのですが、以下のように記述しているのですが、正しく判断されないようです。 どのように記述すればよいのでしょうか??? ---------------------------------------- SQL="SELECT 単価,フラグ FROM AAA_TBL" Set RS = Conn.Execute(SQL) IF RS(0) = NULL THEN RESPONSE.WRITE "空白" ELSE RESPONSE.WRITE "単価" END IF IF RS(1) = NULL THEN RESPONSE.WRITE "空白" ELSE RESPONSE.WRITE "フラグ" END IF ---------------------------------------- Accessdb:AAA_TBL フィールド名/データ型 単価/INT4 フラグ/varchar
- ベストアンサー
- Microsoft ASP
- LOAD DATA INFILE で最初のカラム以外がロードされないで NULL になってしまう
お世話になります。MySQL勉強中の初心者です。 環境: MySQL5.1 OSX10.4 ターミナル (Winでいう「cmdプロンプト」です) 問題: LOAD DATA INFILE でコマンドは通るのですが、select*from でチェックすると第一カラム(左端)だけは正常にロードされるんですが、残りのカラムがすべて NULL となってしまって切ないです。 ロードしたデータの例: 1011 jan c001 a01 1012 jan c001 a01 1013 jan c002 a03 構造としては、こんな感じです。↓ 文字列[tab]文字列[tab]文字列[tab]文字列[空白スペース?] 現在の結果: | 1011 | NULL | NULL | NULL | | 1012 | NULL | NULL | NULL | | 1013 | NULL | NULL | NULL | 今は小規模なデータだけなのでやむなく手打ちでガコガコ入れてますが、原因を解明したいと思います。 どなたかアドバイス頂けると幸いです。宜しくお願いします。orz れざ
- ベストアンサー
- MySQL
- NULL値を含むソート
MySQL4.0.20を使っています。 以下のようなデータをソートすると NULLが先に表示されます。 これをNULLを最後にして、数値のソートをかけたいです。何か解決策はありますか?2回に分ける方法しかないのでしょうか? nullと非null ◆元データ A --- 5 NULL 2 NULL 3 1 select A from xxx order by A asc; ●望まない結果 A --- NULL NULL 1 2 3 5 ●望む結果 A --- 1 2 3 5 NULL NULL ※話は変わりますが、4.1で日本語EUCの文字化けバグは直っているのでしょうか?
- ベストアンサー
- MySQL
お礼
回答大変ありがとう御座います。 >空白ってなに? とご指摘頂いたのですが、mysql の初期値をnullにすると削除されたデーターには空白が残るのではないのでしょうか?うーん。。すいません。 わかりませんでした。 それはうやむやなのですが、 count(if(data=0,null,data) ) をcount(if(data='',null,data) ) としたら空白もnullとしてカウントされなくなったようで、 うまくできたようです。ifでできるとは初めて知りました! ご回答大変勉強になり、助かりました! 本当にありがとう御座います。 また何かありましたら是非よろしくお願い致します。