So vermeiden Sie die Gruppierung nach bestimmten Spalten
P粉667649253
2023-07-25 14:08:22
<p>Ich habe eine Datentabelle zu Terminen und wenn die zugehörigen Daten aktualisiert werden, kann jeder Termin mehrere Datenzeilen haben. Ich möchte den letzten Datensatz jedes Termins auswählen, um den neuesten Schnappschuss jedes Termins zu erhalten. </p><p>Im angehängten Code bin ich gezwungen, nach close_pallets und close_units zu gruppieren, was sich auf das auswirkt, was ich sehe (d. h. mehrere zurückgegebene Zeilen pro Termin). Ich möchte nur nach a.appointment_id gruppieren, damit ich eine Zeile pro Termin erhalte. Was soll ich tun?</p><p><br /></p>
<pre class="brush:php;toolbar:false;">SELECT
MAX(appointment_record_version_number),
termine_id,
date_pallets AS close_pallets,
date_units AS close_units
AUS
b.dh
WO
last_updated_datetime ZWISCHEN „01.06.2023“ UND „30.06.2023“
UND Warehouse_id = 'xxx'
GRUPPIERE NACH
termine_id,
close_pallets,
close_units</pre>
<p><br /></p>
您将需要使用子查询来实现这一点。实际上,您需要获取每个约会ID的最大记录版本:
你也可以使用JOIN语句来选择最大值,有时会更快:
根据您的用例,特别是如果您的数据库很大,您可以使用其他子查询或索引来进一步优化请求,但它已经相当快了。