SORU
18 EYLÜL 2009, Cuma


Nasıl MySQL/önceki kayıt sonraki almak için?

Kimlikleri 3,4,7,9 ile kayıtları var ve önceki/sonraki bağlantılar üzerinden navitagion tarafından diğerine gitmek mümkün olmak istiyorum söylüyorlar. Sorun yüksek KİMLİĞİ ile en yakın kayıt almak için nasıl bilmiyorum.

Kaydı aldığımda KİMLİĞİ ile 4, almak mümkün olmak istiyorum 7 olurdu kaydı mevcut gelecek. Sorgu muhtemelen gibi bir şey olacaktır

SELECT * FROM foo WHERE id = 4 OFFSET 1

Nasıl tüm sonuç kümesi yineleme ve elle alma olmadan bir sonraki/önceki rekor getirebilir miyim?

MySQL 5 kullanıyorum.

CEVAP
18 EYLÜL 2009, Cuma


cemkalyoncu's ek olarak çözüm:

sonraki kayıt:

SELECT * FROM foo WHERE id > 4 ORDER BY id LIMIT 1;

önceki rekor:

SELECT * FROM foo WHERE id < 4 ORDER BY id DESC LIMIT 1;

düzenleme:Beri bu cevap oldu bir kaç upvotes son zamanlarda gerçekten istediğim için stres comment I made Daha önce anlayışlı bir birincil anahtar colum değil demek gibi bir sütuna göre sıralamak, çünkü MySQL garanti etmez yüksek, otomatik artan değerler vardır mutlaka eklenen daha sonraki bir zamanda.

Bu umurunda değil, sadece (veya daha düşük) id daha yüksek bir kayıtla lazım o zaman bu yeterli olacaktır. Sadece bir kayıt gerçekten sonraki (veya önceki) eklenmiş olup olmadığını belirlemek için bir araç olarak kullanmayın. Yerine, örneğin sıralamak için bir datetime sütun kullanmayı düşünün.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LinusTechTips

    LinusTechTip

    25 Kasım 2008
  • sk8ingis4me

    sk8ingis4me

    16 Mart 2006
  • TheFlashCentre

    TheFlashCent

    22 Mayıs 2008