Ich habe eine Reihe von Datensätzen, die von einem group_id
Wie setze ich die Position des Datensatzes relativ zu einer Gruppe in SQL?
Beispiel Datensätze gruppiert werden können:
╭───╥──────────┬───────────────────╮
│id ║ group_id │ position_in_group │
╞═══╬══════════╪═══════════════════╡
│ 1 ║ 2 │ null │
│ 2 ║ 1 │ null │
│ 3 ║ 1 │ null │
│ 4 ║ 1 │ null │
│ 5 ║ 2 │ null │
│ 6 ║ 2 │ null │
│ 7 ║ 3 │ null │
│ 8 ║ 3 │ null │
│ 9 ║ 3 │ null │
└───╨──────────┴───────────────────┘
ich die position_in_group
für jeden Datensatz festlegen möchten. Es ist die Position des Datensatzes innerhalb der Gruppe, wenn ich GROUP BY group_id
.
Zum Beispiel: In der Gruppe mit der ID 1, die Platte mit id = 2 ist die erste, so dass ihre position_in_group
würde 1.
Der Finaltisch sei sein:
╭───╥──────────┬───────────────────╮
│id ║ group_id │ position_in_group │
╞═══╬══════════╪═══════════════════╡
│ 1 ║ 2 │ 1 │
│ 2 ║ 1 │ 1 │
│ 3 ║ 1 │ 2 │
│ 4 ║ 1 │ 3 │
│ 5 ║ 2 │ 2 │
│ 6 ║ 2 │ 3 │
│ 7 ║ 3 │ 1 │
│ 8 ║ 3 │ 2 │
│ 9 ║ 3 │ 3 │
└───╨──────────┴───────────────────┘
Ist kann ich das irgendwie in einer SQL-Abfrage machen?
Dies würde erfolgen mit 'row_number() über (Partition von group_id Reihenfolge nach ID) 'in Oracle und Sqlserver. Überprüfen Sie hier für mysql gleichwertige Optionen: http://StackOverflow.com/q/1895110/6205293 – mo2
Ja, eine Abfrage mit Variablen (@ 's) ... jemand knallt eins aus. – Drew