Nasıl SQL veya PHP kullanarak bir sorgu sonucunda tek bir satır görmezden mi?

4 Cevap php

Ben nasılsa erken tarih ile yazı sayabilirsiniz? SQL veya PHP ile?

SELECT subject, date 
FROM posts
WHERE id = $id
ORDER BY date DESC
while ($row = mysql_fetch_array($query)) {

Şerefe

4 Cevap

Muhtemelen bunu yapmak için biraz dolambaçlı sql yazabilirim, ya da sadece php bunu yapabilirdi:

$first = true;
while ($row = mysql_fetch_array($query)) {
    if ( $first ) {
       $first = false;
       continue;
    }

    // Process rows here
}

Ben bu test şeyim yok, ama bu işe yarar mı?

SELECT subject, date 
FROM posts
WHERE id = $id
OFFSET 1
ORDER BY date DESC

Ya da açıklamalarda belirttiği gibi MySQL beş uyumluluk için

SELECT subject, date 
    FROM posts
    WHERE id = $id
    LIMIT 1,18446744073709551615;
    ORDER BY date DESC

Sayıda MySQL docs tam kopyalandı.

Varsayarsak tarih benzersiz belirli bir kimliği için bir satır belirler,

  SELECT subject, date 
    FROM posts
   WHERE id = $id
     AND date NOT IN
         ( SELECT MIN(date)
             FROM posts
            WHERE id = $id
         )
ORDER BY date DESC

Eğer SQL 2005 veya daha iyi kullanıyorsanız, size Satır_sayısı işlevini kullanabilirsiniz ...

With MyCTE AS (
    SELECT subject, 
           date,
           RowNumber = ROW_NUMBER() OVER(ORDER BY date DESC)
    FROM   posts
    WHERE  id = $id)
SELECT *
FROM   MyCTE
WHERE  RowNumber > 1
ORDER BY date DESC