C'è qualche differenza tra 'LIMIT 0, 1' e 'LIMIT 1'?


15

Di recente mi sono imbattuto in codici di esempio, che differivano da queste notazioni.

SELECT * FROM table LIMIT 0, 1
SELECT * FROM table LIMIT 1

Il primo argomento dovrebbe essere considerato come offset se non sbaglio, lo scopo di queste due query è limitare la selezione fino alla prima riga di table

C'è qualche effetto negativo quando si lascia fuori l'offset / come è possibile lasciarlo fuori in primo luogo? O ho frainteso le domande?


3
No, hai capito bene, sono equivalenti. Anche questo è: LIMIT 1 OFFSET 0. Ma dovresti davvero includerlo ORDER BYin qualsiasi query che abbia LIMIT, a meno che non ci sia un motivo specifico per non farlo.
ypercubeᵀᴹ

Risposte:


13

Come dice la documentazione :

La  LIMIT clausola può essere utilizzata per limitare il numero di righe restituite  SELECT dall'istruzione. LIMIT accetta uno o due argomenti numerici, che devono essere entrambi costanti intere non negative (tranne quando si usano istruzioni preparate).

Con due argomenti, il primo argomento specifica l'offset della prima riga da restituire e il secondo specifica il numero massimo di righe da restituire. The offset of the initial row is 0 (not 1).

La LIMITclausola viene utilizzata SELECTnell'istruzione per vincolare il numero di righe in un set di risultati. La LIMITclausola accetta uno o due argomenti. I valori di entrambi gli argomenti devono essere zero o costanti di numero intero positivo.

Di seguito viene illustrata la LIMITsintassi della clausola con 2 argomenti:

SELECT * FROM tbl
LIMIT offset, count;

Vediamo cosa significano offset e count nella clausola LIMIT:

  • I offsetIndica l'offset della prima fila di ritorno. L'offset della prima riga è 0, non 1.
  • Il countnumero massimo di righe specifica per tornare.

Quando si utilizza LIMITcon un argomento, questo argomento verrà utilizzato per specificare il numero massimo di righe da restituire dall'inizio del set di risultati.

SELECT * FROM tbl LIMIT count;

La query sopra è equivalente alla seguente query con la LIMITclausola che accetta due argomenti:

SELECT * FROM tbl LIMIT 0, count;

La LIMITclausola spesso utilizzata con la ORDER BYclausola. Innanzitutto, utilizzare la ORDER BYclausola per ordinare il set di risultati in base a determinati criteri, quindi utilizzare la LIMITclausola per trovare i valori più bassi o più alti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.