sql >> Databáze >  >> RDS >> Mysql

MYSQL vybírá nejnovější příspěvky z tabulek

To ID by teoreticky stále fungovalo za předpokladu, že se ID nikdy nezmění...

Doporučil bych použít pole časového razítka ve struktuře tabulky nazvané "date" a použít "CURRENT_TIMESTAMP" jako výchozí hodnotu, při vložení se automaticky vyplní datum/čas v záznamu...

Seřaďte podle tohoto pole DESC, limit x

Také jsem zaznamenal mnoho případů, kdy se díky seskupování objevila nesprávná data... Ujistěte se, že jsou vaše data správná, než se použije ORDER BY a LIMIT

Pro získávání příspěvků od uživatele 1 k uživateli 1 není potřeba seskupovat podle:

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

Pro získávání příspěvků od * uživateli1:

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

Pro získávání příspěvků od * uživateli1 pouze unikátní uživatelé:

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

Někdy narazíte na problém, kdy GROUPED záznamy nejsou seřazeny podle ORDER BY, protože ORDER BY se použije na výsledek PO použití seskupení... Řešení:

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

Chcete-li získat poslední 3 uživatele, kteří si v poslední době poslali příspěvek:

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


  1. Jak nastavit primární klíč při propojování s CreateTableDef

  2. Získejte rozdíl mezi dvěma daty v měsících a dnech v SQL

  3. Python multiprocessing pool visí na mapovém volání

  4. MySql dotaz BETWEEN two Strings někdy nefunguje