特定の列でのグループ化を回避する方法
P粉667649253
2023-07-25 14:08:22
<p>予定に関するデータ テーブルがあり、関連データが更新されると、各予定に複数行のデータが含まれる可能性があります。各予定の最後のレコードを選択して、各予定の最新のスナップショットを取得したいと考えています。 </p><p>添付のコードでは、close_pallets と close_units でグループ化する必要があり、表示内容に影響を与えます (つまり、予定ごとに複数の行が返されます)。 a.appointment_id のみでグループ化したいので、予定ごとに 1 行を取得します。どうすればいいですか?</p><p><br /></p>
<pre class="brush:php;toolbar:false;">SELECT
MAX(アポイントメントレコードバージョン番号)、
予定ID、
appointment_pallets AS close_pallets、
appointment_units AS close_units
から
b.dh
どこ
last_updated_datetime '2023-06-01' と '2023-06-30' の間
AND 倉庫 ID = 'xxx'
グループ化
予定ID、
パレットを閉じる、
close_units</pre>
<p><br /></p>
これを実現するには、サブクエリを使用する必要があります。実際には、各予定 ID の最大記録バージョンを取得する必要があります:
リーリーJOIN ステートメントを使用して最大値を選択することもできます。この方が速い場合があります:
リーリーユースケースに応じて、特にデータベースが大きい場合は、追加のサブクエリまたはインデックスを使用してリクエストをさらに最適化できますが、すでにかなり高速です。