余計なことは言わないで、コードだけ見てみましょう〜 プロジェクト番号を選択、 sum(case when device_state=0 then 1 else 0 end)as offTotal 、 sum(case when device_state=1 then 1 else 0 end)as onlineTotal, 合計(1)合計 iot_d_deviceから プロジェクト番号でグループ化 プロジェクト番号で並べ替え 補足: MySQLは1つのSQL文を使用して複数の統計結果を照会します モール プロジェクトでは、ユーザーが自分の個人センター ページでさまざまなステータスの注文数を照会するという問題に必然的に直面することになります。もちろん、この問題は難しくありません。状態を入力パラメータとして受け取り、毎回異なる状態値を渡すことで、対応する状態にある注文の数を順に照会する DAO レイヤー メソッドを作成できます。 今日、H5 インターフェースを書いているときに、別の方法で確認したいと思いました。つまり、1 つの SQL で複数の状態の注文数を照会したいと思いました。ネットで検索して、この方法が実行可能であることがわかったので試してみたところ、期待通りに機能しました。 例は次のとおりです (データは今日の問題を説明するためだけに使用されており、表の設計は厳密ではありません。私を責めないでください)。FOREIGN_KEY_CHECKS=0 に設定します。 -- ---------------------------- -- mini_test_order のテーブル構造 -- ---------------------------- `mini_test_order` が存在する場合はテーブルを削除します。 テーブル「mini_test_order」を作成します( `id` int(11) NULLではない、 `order_no` varchar(32) デフォルト NULL コメント '注文番号', `user_id` int(11) デフォルト NULL コメント 'ユーザーID', `shop_id` int(11) デフォルト NULL コメント '販売者ID', `order_status` tinyint(1) デフォルト NULL コメント '注文ステータス', `create_time` int(10) DEFAULT NULL COMMENT '作成時刻', 主キー (`id`) )ENGINE=InnoDB デフォルト文字セット=utf8; -- ---------------------------- -- mini_test_order の記録 -- ---------------------------- `mini_test_order` に値 ('1'、'aaaaaaaaa'、'11'、'111'、'1'、'1573041313') を挿入します。 `mini_test_order` に値 ('2'、'bbbbbbbb'、'11'、'222'、'1'、'1573041313') を挿入します。 `mini_test_order` に値 ('3'、'cccccccccc'、'11'、'333'、'2'、'1573041313') を挿入します。 `mini_test_order` に値 ('4'、'dddddddd'、'11'、'222'、'3'、'1573041313') を挿入します。 `mini_test_order` に値 ('5'、'eeeeeeeeee'、'11'、'111'、'4'、'1573041313') を挿入します。 `mini_test_order` に値 ('6'、'ffffffffffffff'、'11'、'111'、'3'、'1573041313') を挿入します。 `mini_test_order` に値 ('7'、'gggggggg'、'11'、'222'、'4'、'1573041313') を挿入します。 `mini_test_order` に値 ('8'、'hhhhhhhhh'、'11'、'111'、'4'、'1573041313') を挿入します。 `mini_test_order` に値 ('9'、'iiiiiiiiiiiiiiiiiiiii'、'11'、'333'、'3'、'1573041313') を挿入します。 `mini_test_order` に値 ('10'、'jjjjjjjjjjjjjjjjjjjjj'、'11'、'222'、'1'、'1573041313') を挿入します。 コア SQL ステートメントは次のとおりです。 SELECT COUNT(CASE order_status WHEN 1 THEN 1 END) AS "ステータス 1",COUNT(CASE order_status WHEN 2 THEN 1 END) AS "ステータス 2",COUNT(CASE order_status WHEN 3 THEN 1 END) AS "ステータス 3",COUNT(CASE order_status WHEN 4 THEN 1 END) AS "ステータス 4" FROM `mini_test_order`; または次のようになります。 SELECT COUNT(CASE WHEN order_status = 1 THEN 1 END) AS "ステータス 1",COUNT(CASE WHEN order_status = 2 THEN 1 END) AS "ステータス 2",COUNT(CASE WHEN order_status = 3 THEN 1 END) AS "ステータス 3",COUNT(CASE WHEN order_status = 4 THEN 1 END) AS "ステータス 4" FROM `mini_test_order`; もちろん、SQL 文は上記の 2 つの方法に限定されるわけではありません。探索したい方は、補足のメッセージを残してください。 MySQLの場合、2つの構文があります。1. シンプルな機能 CASE [列名] WHEN [値1] THEN [結果1]…ELSE [デフォルト] END 2. 検索機能 CASE WHEN [式] THEN [結果1]…ELSE [デフォルト] END 両者の違い前者は、値が条件 value1 を満たす場合に、col_name フィールドのすべての可能な値を列挙します。 後者は判断を記述することができ、検索機能は条件を満たす最初の値のみを返し、他のケースは無視されます。 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。 以下もご興味があるかもしれません:
|
<<: ウェブデザインと制作におけるハイパーリンクの効果の向上
この記事では、SMS送信のカウントダウンを実装するためのJavaScriptの具体的なコードを参考ま...
1. 複合主キーいわゆる複合主キーとは、テーブルの主キーが複数のフィールドで構成され、ビジネス上の意...
まず、私たちがやりたいことは、serverA の usera を使用して、パスワードなしで serv...
目次トピックmysqlの追加、削除、変更、クエリを入力しますMySQL トランザクション処理私は M...
MySQL のデータ量が多い場合、制限ページングが使用されます。ページ数が増えると、クエリの効率が低...
まず、この投稿は Docker 初心者向けです。もちろん、ベテランであれば記事中の分割線以降の操作方...
名前タグの名前を指定します。形式 <input type="text" n...
tomcat 設定ファイルから、tomcat の起動時にデフォルトで 8080 (8443)、800...
float の使用例左サスペンション: float:left;右サスペンション: float:rig...
目次1. RabbitMqの動作環境を構築する1.検索を通じてrabbitmqイメージを照会する2....
知識への依存Go クロスコンパイルの基礎Dockerの基礎Dockerfileカスタムイメージの基本...
同僚から、LINUX サーバー上の多くのコマンドが (コマンドが見つかりません) というプロンプトで...
カーネル: [root@opop ~]# cat /etc/centos-release CentO...
1. 単一行オーバーフロー1. 1 行がオーバーフローした場合、超過部分は表示されます...または、...
みなさんこんにちは、今日はウェブフロントエンドのHTMLを見ていたら、inputタグのtype属性が...