J'ai une table comme ceci:Combien de lignes ont été sélectionnées?
// mytable
+----+-----------------+
| id | timestamp |
+----+-----------------+
| 1 | 1452001861 | -- yesterday
| 2 | 1452088272 | -- today
| 3 | 1452088283 | -- today
| 4 | 1451915461 | -- last week
| 5 | 1452001861 | -- yesterday
| 6 | 1452088263 | -- today
| 7 | 1252388263 | -- out of {today, yesterday, last week}
| 8 | 1452088312 | -- today
| 9 | 1452001762 | -- yesterday
| 10 | 1222388263 | -- out of {today, yesterday, last week}
| 12 | 1451915459 | -- last week
+----+-----------------+
Et voici ma question:
SELECT * FROM mytable
WHERE DATE(FROM_UNIXTIME(timestamp)) >= CURDATE() - INTERVAL 7 DAY
ORDER BY timestamp DESC
La requête ci-dessus sélectionner toutes les lignes avec sont entre maintenant et 7 derniers jours.
Maintenant, parfois toutes les lignes sont avant 7 derniers jours (je veux dire est la toute dernière ligne est par exemple ajouté en 8 jours) puis la sortie de cette requête ne sera rien (0 ligne sélectionnée). Ce que je veux, c'est s'il n'y a pas de ligne sélectionnée (0 lignes), puis 5 dernières lignes (qui ont été ajoutées plus tôt). Comment puis je faire ça?
Semble correct, mais il est d'optimiser? Je pense qu'il faut beaucoup de traitement ..! Fredonner? – stack
Comme la première requête est seulement là pour obtenir un compte, vous pouvez supprimer le 'ORDER BY' pour réduire la charge un peu – RiggsFolly
Je pense aussi avoir lu quelque part que' count (id) 'par exemple est plus rapide que' count (*) 'probablement encore mieux si c'est un champ indexé – RiggsFolly