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

    [QUERY] selezionare il penultimo record

    ciao a tutti,
    vorrei fare una query che mi selezioni il penultimo record della tabella usando soltanto WHERE e senza usare LIMIT...
    è possibile?
    naturalmente il server è MySQL...

    ho pensato di utilizzare in ordine decrescente il primo escludendo l'ultimo id inserito... ma come fare se l'ultimo record è stato cancellato?
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  2. #2
    Se l'ultimo e' stato cancellato diventera' ultimo quello che prima era penultimo.... di certo e' che un ultimo c'e' sempre a condizione ce ne sia almeno uno.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    hai risposto con una risposta intelligente, ma non hai risposto alla mia stupida domanda...

    comunque intendevo dire che...
    quando hai un contatore auto_increment
    se tu inserisci e l'ultimo campo è 11
    ti inserisce un nuovo con id 12
    se tu cancelli il 12
    e inserisci un altro campo
    ti inserisce un nuovo id 13!

    per cui
    se io vado a cercare il penultimo facendo 13-1
    mi da 12 che non esiste!
    mentre io vorrei 11!

    comunque come si fa utilizzando solo WHERE?
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  4. #4
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Non ho capito perchè non vuoi usare LIMIT
    Comunque puoi sempre selezionare tutti i record in ordine decrescente e scegliere il primo

    Oppure ancora li listi tutti e scegli il penultimo...

    codice:
    // scegli tutto
    $ris_quest = mysql_query("SELECT * FROM $tuatabella");
    
    // numero record: mi aspetto che sia >= 2 !!!
    $nrecords = mysql_num_rows($ris_query);
    
    // se $nrecord è 2 eseguo solo $i=0<2-1=1
    for($i=0; $i<nrecords-1; $i++){
      $record = mysql_fetch_array($ris_quest);
    }
    
    //$record contiene il penultimo
    ...ma è poco efficiente!

  5. #5
    L'alternativa al non uso del LIMIT e' fare il SELECT * ..ORDER BY campo DESC ed estrarre il secondo record (mysql_data_seek).

    Oppure anche senza ORDER BY ma contando i record e muovere il puntatore al penultimo estratto.

    Rimane sempre il quesito: Ma che male ti ha fatto LIMIT ???


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.