最近、IM を実行するときに、これらの 3 つのキーワードを同時に使用したときに問題が発生しました。これは、ある人物のオフライン メッセージの詳細を照会することです。サーバーからクライアントに返される詳細には、3 つの内容が含まれます。1 つ目は、オフライン期間中にどの人物またはグループがメッセージを送信したかを一覧表示することです。2 つ目は、特定の人物またはグループが送信したオフライン メッセージの数です。3 つ目は、最新のメッセージを表示することです。当然、オフライン メッセージを送信した人またはグループをグループ化し、count() でオフライン メッセージの数を取得し、時間順に並べ替えて最新のメッセージを取得します。 すると、予想通り、group by と order by を一緒に検索するとエラーが発生します。ネストされたサブクエリを使用できます。 すでにソートされた結果をグループ化して、その数を計算できます。ここには隠れた落とし穴がありますが、私は偶然それを避けてしまいました。実際、count() は order by ソートを無効にします。例えば: このステートメントは最終的に、msg_data が実際にはまったくソートされていない、つまりデータベースの元の順序のレコードを取得します。これは最初に挿入されたメッセージ、つまり古いメッセージである必要があります。この問題を回避するには、ネストされたサブクエリを最初にソートし、次に count() を使用してこの問題を回避します。意図せずに回避しましたが、文を修正して何度もテストした後で発見しました。 以下もご興味があるかもしれません:
|
<<: Linux サービスでファイアウォールを有効にする 2 つの方法
>>: Vue の関連ページへのマルチレベルジャンプ (ページドリルダウン) 機能の完全な例
React プロジェクトの構築は非常に簡単ですが、Typescript と組み合わせると、実際にはそ...
いわゆるスライディングドアテクノロジーとは、さまざまな長さのテキストに合わせてボックスの背景を自動的...
目次1. デザインパターンとは何ですか? 2. デザインパターンの5つの設計原則(SOLID) 3....
1. 遭遇した問題分散プロジェクトの展開プロセスでは、サーバーの再起動後にアプリケーション(データベ...
概要この記事では、ゲームクライアントでよく使用される MVC アーキテクチャについて紹介します。ゲー...
この記事では、参考までに、シンプルなディスククロックを実装するためのjsの具体的なコードを紹介します...
背景日本語を学び始めた当初は、日本語の50音を覚えるのは簡単ではなく、特にカタカナを覚えるのは困難で...
序文div またはモジュールに overflow: scroll 属性を使用すると、iOS フォンで...
作成されたタブラベルがページの表示領域を超えると、タブラベルの距離だけ自動的にスクロールされます。ま...
訪問者があなたのウェブサイトを覚えておくのに役立つ3つの便利なコード。お気に入りに追加するためのヒン...
目次一般的な配列メソッドポップ()シフト解除()シフト()スライス()スプライス()配列から重複した...
次の図に示すように: Centos 7.0以上であれば問題ありません。現在のシステム カーネル バー...
CocosCreator バージョン: 2.4.2 jszipの実践的なプロジェクトアプリケーション...
Springboot プロジェクトを開始するには、次の 3 つの方法があります。 1. メインメソッ...
前回、私たちは 2 つのヘッダー レイアウト (フレックスボックス 1 つとフロート 1 つ) を考...