Tanımlayıcı olmadan Sipariş mysql sonuçları

5 Cevap php

Genellikle otomatik artış üzerinde ID adında bir tablo alanı olurdu. Ben vs Bu alanı kullanarak sipariş verebilir yolu

Ancak ben bir tablonun yapısı üzerinde hiçbir kontrole sahip, ve varsayılan tersten sonuç almak nasıl merak.

Şu anda kullanıyorum

$q = mysql_query("SELECT * FROM ServerChat LIMIT 15");

Ben bu yüzden sonuçlarını alır sırasını tersine çevirmek için mysql anlatmak için bir yol var, üzerinde sipariş edebilirsiniz hiçbir alan bulunmadığını söyledi ancak böyle? Yerine varsayılan ilk satıra yani son satır.

5 Cevap

MySQL sıralı sütun pozisyonuna göre sıralamasını destekler:

SELECT * FROM ServerChat ORDER BY 1 DESC LIMIT 15

Ama IIRC bu kullanım ORDER BY SQL standardında önerilmiyor. Bazı RDBMS satıcıları (sonunda) bunun için destek durdurma eğer şaşırmayın.

Genel olarak, bu tablo yapısını bilmek daha iyidir.

Hayır sipariş bir alana olmadan hiçbir yolu yoktur

Siz aslında veri tabloya eklenir olduğu sırayla ama bu düzen istikrarlı değil gibi görünebilir ki, "masa düzeni" olarak bilinen daki sonuçlar elde edilir. Eğer tablonun kendisini verileri değiştirmeden sonuçlar alıyoruz sırasını değiştirebilirsiniz operasyon vardır.

Eğer ben türü senin tabloya bir sütun ekleyerek öneririm görüyoruz düzenin tür üretmek için ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP. Bu size özellikle üzerinde sipariş ve bu nedenle, bu düzeni tersine çevirmek için bir sütun verecektir. Bu işlem sık bir ise muhtemelen de bu sütunun üzerinde bir dizin eklemek gerekir.

Göre this article, SQL-92 kullanıcı ınformatıon_schema denilen "iyi bilinen" görünümünde veya tablodan tablo yapısı bilgileri sorgulamak için izin verir. SQL-92 yukarı MySQL 5.0 ve tarafından desteklenmektedir.

Örnek / Alıntı:

SELECT table_name, column_name, is_nullable, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.Columns
WHERE table_name = 'employees'

Yani o this SO answer doğru sorguyu yürütmek böylece dinamik SQL oluşturmak için nasıl anlamaya kullanmak, kullanıcının o ile emretti hangi sütun seçmek için izin sütun adlarının listesini kullanabilirsiniz.

MySQL ile denedim değil, ama yöntem kesinlikle bana mantıklı.

Sizin tabloda bazı benzersiz dizin belirtilmiş olmalıdır. Bu siparişiniz şu anda döndü belirlenmesinde ne olasılıkla kimlik adlandırılacak, ancak genellikle 'gerekli ve yoktur. Bu nedir? Ne olursa olsun, bu benzersiz tanımlayıcı {[(2 ile bu örnekte olduğu gibi, bir ORDER BY ... DESC (ya da işe yaramazsa, ASC) yapmak mümkün olmalıdır benim anladığıma )]}:

$q = mysql_query("SELECT * FROM ServerChat ORDER BY `hash` DESC LIMIT 15");