sql >> Database teknologi >  >> RDS >> Mysql

MYSQL vælger de nyeste indlæg fra tabeller

ID-tinget ville stadig fungere teoretisk, forudsat at ID'et aldrig ændres...

Jeg vil anbefale at bruge et tidsstempelfelt i tabelstrukturen kaldet "dato" og bruge "CURRENT_TIMESTAMP" som standardværdi, dette vil automatisk udfylde dato/klokkeslæt på posten ved indsættelse...

Bestil efter dette felt DESC, grænse x

Jeg har også oplevet mange tilfælde af forkerte data, der dukkede op takket være gruppering... Sørg for, at dine data er korrekte, før ORDER BY og LIMIT anvendes

For at få indlæg fra bruger1 til bruger1 er der ingen grund til at gruppere efter:

SELECT * FROM posts 
WHERE toID=fromID
ORDER BY date DESC LIMIT 3

For at få indlæg fra * til bruger1:

SELECT * FROM posts 
WHERE toID="USER1_ID"
ORDER BY date DESC LIMIT 3

For at få indlæg fra * til bruger1, kun unikke brugere:

SELECT * FROM posts 
WHERE toID="USER1_ID"
GROUP BY FromID
ORDER BY date DESC LIMIT 3

Nogle gange vil du støde på problemet, hvor GROUPED-poster ikke er sorteret efter ORDER BY, fordi ORDER BY anvendes på resultatet EFTER grupperingen er anvendt... Sådan opnår du en løsning:

SELECT * FROM (
  SELECT * FROM posts 
  WHERE toID="USER1_ID"
  ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3

For at få de sidste 3 brugere, der senest har sendt sig selv et indlæg:

SELECT * FROM (
  SELECT * FROM posts 
  WHERE toID=fromID
  ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3


  1. funktion bind_param() på et ikke-objekt i min nye kode

  2. 4 måder at indsætte flere rækker på i Oracle

  3. Hvorfor fortæller Oracle dig ikke HVILKEN tabel eller visning der ikke findes?

  4. ASP.NET Web Forms og MySql Entity Framework:Indlejrede transaktioner understøttes ikke