sql >> Database >  >> RDS >> Mysql

MYSQL selecteer nieuwste berichten uit tabellen

Het ID-ding zou theoretisch nog steeds werken, op voorwaarde dat de ID's nooit veranderen...

Ik zou aanraden om een ​​tijdstempelveld in de tabelstructuur genaamd "date" te gebruiken en de "CURRENT_TIMESTAMP" als standaardwaarde te gebruiken, dit zal automatisch de datum/tijd in het record invullen bij het invoegen...

Bestel via dit veld DESC, limiet x

Ik heb ook veel gevallen meegemaakt waarin de verkeerde gegevens werden weergegeven dankzij groepering... Zorg ervoor dat uw gegevens correct zijn voordat ORDER BY en LIMIT wordt toegepast

Om berichten van gebruiker1 naar gebruiker1 te krijgen, is het niet nodig om te groeperen op:

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

Om berichten van * naar gebruiker1 te krijgen:

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

Om berichten van * naar gebruiker1 te krijgen, alleen unieke gebruikers:

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

Soms loop je tegen het probleem aan dat GROUPED records niet op ORDER BY worden geordend, omdat ORDER BY op het resultaat wordt toegepast NADAT de groepering is toegepast... Om een ​​tijdelijke oplossing te bereiken:

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

Om de laatste 3 gebruikers te krijgen die zichzelf het laatst een bericht hebben gestuurd:

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


  1. PHP MYSQL UPDATE indien aanwezig of INSERT indien niet?

  2. Hoe installeer ik het mysqlnd-stuurprogramma met MAMP?

  3. Is er een verschil tussen DateTime in c# en DateTime in SQL-server?

  4. .NET 2.0 en MySql in medium trust-modus