ここから本文です

Perl MySQL GROUP BY & WHEREの組み合わせ $tbname = "datatable"; $s = "PP...

アバター

ID非公開さん

2019/3/516:31:49

Perl MySQL GROUP BY & WHEREの組み合わせ


$tbname = "datatable";
$s = "PPAP";

現在のゲット方法

SELECT COUNT(*) FROM $tbname WHERE `No` 1 and `STER` like '%$s%'


datetable内
No,STER
1,PPAP
2,HG
3,COOKIE
4,HORI
2,PPAP
3,HG
5,RG
1,PPAP

簡単にこんなテーブルの場合

No列=1
STER列=PPAP

の個数を求める場合(結果=2)

SELECT COUNT(*) FROM $tbname WHERE `No` 1 and `STER` like '%$s%'

これでも答えは返ってくるのですが、繰り返し処理を行う場合
少し遅くなってしまいます(繰り返し処理はNoごとに抽出させる)

そこでGROUP BYならそれを解決できそうな気もするのですが、
やり方がわかりませぬ

SELECT COUNT(*) FROM $tbname WHERE `No` 1 and `STER` like '%$s%'
これと同じことができ
GROUP BYで書くならどうするのでしょうか!?

閲覧数:
30
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shimixさん

2019/3/519:09:56

like を使わないといけないのでしょうか("PPAP"と完全一致でいいなら、like にする必然性がない)

select count(*)
from $tablename
where (`No`=1)and(`STER`='PPAP')



>繰り返し処理はNoごとに抽出させる

group by を使うなら(STERの条件は固定ということなら)

select `No`, count(*)
from $tablename
where `STER`='PPAP'
group by `No`

でいいと思います。whereはgroup byより前に書きます(havingはさらに後に書く)。

https://dev.mysql.com/doc/refman/5.6/ja/select.html

  • アバター

    質問者

    ID非公開さん

    2019/3/519:12:04

    ご回答ありがとうございます!
    すみません、例ではPPAPでしたけど日本語も含む場合もあるのでlikeかな?と…

  • その他の返信(3件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる