Domanda

Ho una tabella con N righe e voglio selezionare N-1 righe.

Suggerimenti su come eseguire questa operazione in una query, se possibile ...?

È stato utile?

Soluzione

L'ultima riga ha l'ID più alto? In tal caso, penso che funzionerebbe:

SELECT * FROM TABLE WHERE ID != (SELECT MAX(ID) FROM TABLE)

MySQL consente le selezioni secondarie nella versione corrente, giusto?

Tuttavia, nella maggior parte dei casi, probabilmente avrebbe prestazioni migliori se si selezionassero tutte le righe e si filtrassero i dati indesiderati nella propria applicazione.

Altri suggerimenti

SELEZIONA DISTINCT t1.columns FROM tabella t1
INNER JOIN tabella t2 ON t1.id & Lt; t2.id

Nella mia esperienza, MySQL ama questa tecnica, risalendo a diverse versioni.

Un'altra tecnica che non vedo elencata qui è

SELECT * FROM table ORDER BY id DESC LIMIT 10000 OFFSET 1;

Questo ti darà i record ordinati per discendente id tranne il primo, ovvero l'ultimo nell'ordine originale.
Tieni presente che con questo metodo prenderai solo 10000 record, tuttavia questo numero può essere alto quanto vuoi ma non può essere omesso.
Il vantaggio di questo metodo è che puoi ordinare per quello che vuoi.
Lo svantaggio è che ti dà i record ordinati dall'ultimo al primo.
Infine vale la pena notare che gli altri metodi qui funzionano abbastanza bene

Un altro modo per farlo potrebbe essere:

SELECT * FROM table WHERE ID <> LAST_INSERT_ID()

Riferimento: http: //dev.mysql. com / doc / refman / 5.7 / it / getting-unico-id.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top