Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [MySQL] ... LIMIT 0, LimiteVariabile;

    Ciao,

    sto cercando di far girare una query che permetta alla clausola LIMIT di utilizzare un valore variabile.

    Per esempio
    codice:
    SELECT IDSorgente, MAX(OraAcquisizione) as UltimaAcquisizione, (SELECT Count(*) as NumSorgenti FROM sorgenti) as NumStations
    FROM Intestazioni h
    Group BY IDSorgente DESC
    LIMIT 0,NumSorgenti;
    Il problema è che la LIMIT non accetta l'attributo come parametro.

    Avevo letto che era un bug che è stato risolto credo a inizio anno. Ho aggiornato MySQL ma continua a non funzionare:

    dice che c'è un errore di sintassi.

    Voi riuscite a farla funzionare una query del genere??

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Per poter usare variabili nella clausola limit ti serve una prepared statement.

    codice:
    set @conta = (SELECT Count(*) FROM sorgenti);
    prepare stmt from 'select ...... desc limit ?';
    execute stmt using @conta;
    deallocate prepare stmt;

  3. #3
    Grazie
    Mmmmh.... prepared statements ..... non le conosco; devo studiarmele.

    Per il resto, apparte i workaround, ero proprio curioso di capire se c'era qualche modo di utilizzare LIMIT fornendogli dei parametri.
    A voi lo fa?

    C'è un bugreport del 2004 che parla di questa cosa.... e sembra che sia stato risolto nel 2010.
    Volvevo appunto provare questa "novità" e vedere se riuscivo ad utilizzare la sintassi proposta.


  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da pictor
    Per il resto, apparte i workaround, ero proprio curioso di capire se c'era qualche modo di utilizzare LIMIT fornendogli dei parametri.
    A voi lo fa?
    L'unico modo che mi risulta è quello che ti ho suggerito.
    Direttamente dal manuale

    http://dev.mysql.com/doc/refman/5.0/en/select.html

    The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be nonnegative integer constants (except when using prepared statements).
    Quindi non penso si possa nemmeno parlare di bug e anche nella versione 5.5, dando una rapida occhiata al manuale, non mi pare che sia cambiato nulla in merito.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.