Heim > Fragen und Antworten > Hauptteil
Ich werde meine Situation erklären. MySQL 5.7
Ich habe 2 Tabellen: Registry und Mobile. Diese beiden Tische haben IDMovement gemeinsam, sodass ich mich ihnen anschließen kann
Meine Frage: Ich muss nach der Spalte Registry gruppieren (die eine Varchar-Spalte ist) und ich muss MAX IDMovement überprüfen. In dieser Zeile gibt es eine weitere Spalte namens IDCausal. Überspringen, wenn MAX IDMovement auf IDCasual von 21 abweicht. Andernfalls wird die Zeile zurückgegeben.
Ich gebe ein Beispiel dafür, was ich getan habe:
SELECT m.IDMovement, mo.IDCausal, m.Registry FROM registry m JOIN movement mo ON m.IDMovement = mo.IDMovement WHERE m.Registry = "2SST0160"
P.S. WO ist nur ein Beispiel, ich muss jede Registrierung abfragen.
Der Rückgabewert der Registrierung 2SST0160 ist:
IDMovement IDCausal Registry 5550 21 2SST0160 9817 5 2SST0160
Im Beispiel beträgt der MAX IDMovement 9817, aber der IDCausal ist 5, sodass das erwartete Ergebnis der Abfrage in diesem Beispiel NICHTS ist. Wenn IDCausal 21 ist, sind das erwartete Ergebnis nur Zeilen mit 21. Für jede Registrierung erwarte ich, dass das Ergebnis 0 oder 1 Zeile pro Registrierung ist.
Ich hoffe, ich habe es klar ausgedrückt, vielen Dank für Ihre Hilfe!
P粉1655228862023-09-15 00:13:19
WITH newtable AS ( SELECT m.IDMovement, mo.IDCausal, m.Registry FROM registry m JOIN movement mo ON m.IDMovement = mo.IDMovement WHERE m.Registry = '2SST0160' ) SELECT * FROM newtable WHERE (SELECT IDCausal FROM newtable ORDER BY IDMovement DESC LIMIT 1) = 21 ORDER BY IDMovement DESC LIMIT 1;