sql >> Databasteknik >  >> RDS >> Mysql

MYSQL väljer de senaste inläggen från tabeller

ID-grejen skulle fortfarande fungera teoretiskt, förutsatt att ID:n aldrig ändras...

Jag skulle rekommendera att du använder ett tidsstämpelfält i tabellstrukturen som heter "datum" och använder "CURRENT_TIMESTAMP" som standardvärde, detta kommer att automatiskt fylla i datum/tid på posten vid infogning...

Ordna efter detta fält DESC, limit x

Jag har också upplevt många fall av fel data som visas tack vare gruppering... Se till att dina uppgifter är korrekta innan ORDER BY och LIMIT tillämpas

För att få inlägg från användare1 till användare1 behöver du inte gruppera efter:

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

För att få inlägg från * till användare1:

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

För att få inlägg från * till användare1, endast unika användare:

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

Ibland kommer du att stöta på problemet där GROUPED-poster inte sorteras efter ORDER BY, eftersom ORDER BY tillämpas på resultatet EFTER att grupperingen har tillämpats... För att uppnå en lösning:

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

För att få de senaste 3 användarna som senast har skickat ett inlägg till sig själva:

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


  1. Det går inte att starta MySQL från terminalen

  2. mySQL-fråga - visa det populäraste föremålet

  3. Slick 3.0 bulk infoga eller uppdatera (upsert)

  4. Konvertera 'tid' till 'datetimeoffset' i SQL Server (T-SQL-exempel)