sql >> Database >  >> RDS >> Mysql

Negatieve limiet offset in mysql

Je kunt ofwel een heel pijnlijke single select-query doen, of gewoon dit doen:

(SELECT * FROM highscores 
WHERE score <= ( SELECT score FROM highscores WHERE userID = someID ) 
ORDER BY score, updated ASC 
LIMIT 9)
UNION
(SELECT * FROM highscores 
WHERE score = ( SELECT score FROM highscores WHERE userID = someID ))
UNION 
(SELECT * FROM highscores 
WHERE score >= ( SELECT score FROM highscores WHERE userID = someID ) 
ORDER BY score, updated ASC
LIMIT 9)

Ik gooide een stuk in om de score van de aangegeven gebruiker te pakken, dus het staat in het midden van de lijst. Optioneel als je het nodig hebt. Gebruik ook geen SELECT *, gebruik specifieke velden. Duidelijkheid heeft altijd de voorkeur, en qua prestaties * is klote.




  1. Foutcode:1062. Dubbele invoer '1' voor sleutel 'PRIMARY'

  2. Leg uit Plan Kosten Pijnpunt

  3. Tekens invoegen in het midden van een string in SQL Server (T-SQL)

  4. Mysql-query gebruikt geen index als er variabelen zijn in WHERE