2014-07-04 11 views
6

Mam wiele wartości przechowywanych w mojej bazie danych jako typ danych DATETIME (YYYY-MM-DD HH: MM: SS), a ja próbowałem je w malejącym porządek - Największy do najmniej (w przypadku dat - od najstarszego do najstarszego), jednak, co dziwne, wydaje się całkowicie ignorować istnienie operatora DESC.SQL - ORDER BY "datetime" DESC

Kwerenda SQL (w skrócie):

SELECT post_datetime FROM post WHERE type=`published` ORDER BY post_datetime DESC LIMIT 3 

i od tego, one wydrukowane w następującej kolejności:

2014-04-30 11:55:11 
2014-07-01 12:25:40 
2014-07-02 12:28:03 

(Ci, stało się to "najstarsze" wpisy data w bazie danych za)

Rozwiązanie? Zauważam, że używanie DESC w innych sprawach (takich jak normalne liczby) również nie działa. Sprawdziłem moją składnię, wypróbowałem cytaty, bez cudzysłowów, podwójne cudzysłowy & takie.

(Uwaga - I nie będzie w stanie odpowiedzieć na wszelkie pytania przez kilka godzin, choć zrobię mój najlepszy odpowiedzieć raz wrócę)


(6/11/17)

Edit: w celu wyjaśnienia, dla przyszłych czytniki, typo składnia nie było związane z emisją i był błąd z mojej strony podczas wpisywania przykład. Używałem domowej roboty budowania zapytań tak długo, że zapomniałem właściwej składni w tym czasie. Problem leżał w logice mojego programu, a nie w zapytaniu. Powyższy przykład został zmodyfikowany, a jest poprawnym rozwiązaniem dla każdego, kto chce wykonać wymienione zadanie. Przykro mi, że zostało to obejrzane ponad 50 tys. Razy ... ale teraz już wiesz.

+0

To zapytanie powinno było rzucić co najmniej jeden błąd składniowy (biorąc pod uwagę użycie '=' po 'ORDER BY' i' LIMIT') i jeden błąd narzekający, że nie mógł znaleźć kolumny z etykietą ''post_datetime DESC''. Powinieneś najpierw spróbować przepracować takie błędy. –

Odpowiedz

1

Spróbuj:

SELECT post_datetime 
FROM post 
WHERE type = 'published' 
ORDER BY post_datetime DESC 
LIMIT 3 
1

Usuń cytaty tutaj:

brzmi:

ORDER BY = 'post_datetime DESC' AND LIMIT = '3' 

Powinno być:

ORDER BY post_datetime DESC LIMIT 3 
12
  1. użycie śpiewać le cytuje ciągów
  2. nie umieszczać apostrofów wokół nazwy tabeli (użyć `zamiast)
  3. nie należy umieszczać apostrofów wokół numerów (można, ale jest to trudniejsze do odczytania)
  4. nie umieścić AND między ORDER BY i LIMIT
  5. nie kładź = między ORDER BY, LIMIT słów kluczowych i stan

Więc kwerenda będzie wyglądać następująco:

SELECT post_datetime 
FROM post 
WHERE type = 'published' 
ORDER BY post_datetime DESC 
LIMIT 3