PDA

View Full Version : [mysql] query per trovare numeri consecutivi


asghan
26-05-2014, 16:13
Ciao
ipotizzando una tabella con due colonne come questa

A B
-----
1 a
2 b
3 c
4 d
6 f
7 g
9 e

mi servirebbe una query per incrementare il campo a,
partendo (ad esempio da 3) siano a quando i numeri della colonna a sono consecutivi,

UPDATE tabella SET a = a + 1 WHERE a BETWEEN 3 AND (select ????)

in pratica dovrebbe fare questo

UPDATE tabella SET a = a + 1 WHERE a BETWEEN 3 AND (4)
UPDATE tabella SET a = a + 1 WHERE a BETWEEN 6 AND (7)

grazie :)

demonbl@ck
23-06-2014, 22:27
Quello che vuoi fare non è possibile.

In un database relazionale non esiste il concetto di "sequenzialità" dei dati in una tabella: quando tu fai una query di select il database può sputarti fuori i record in un ordine qualsiasi.

Daniels118
24-06-2014, 09:21
@demonbl@ck
Quanto dici è vero per il linguaggio SQL standard, tuttavia molti database possiedono dei propri dialetti che possono consentire o meno determinate operazioni che normalmente non sarebbero possibili.

@asghan
Ti avevo già risposto qui: http://www.hwupgrade.it/forum/showpost.php?p=41151670&postcount=2
Ti riporto la risposta:
La tua richiesta è un po' vaga e lascia spazio a molte interpretazioni, la mia è questa:
UPDATE tabella, (SELECT @row := 3 - 1) r
SET A = A + 1 + (@row := @row + 1) * 0
WHERE A = @row + 1;
Fai attenzione però perché se A è una chiave primaria o unica non puoi incrementare alcun valore se esiste già il successivo.