comment afficher le temps maximum en première ligne et le temps min en deuxième ligne pour l'accès à l'aide VB6Max et Min Temps requête
Répondre
Qu'en est-:
SELECT time_value
FROM (SELECT MIN(time_column) AS time_value FROM SomeTable
UNION
SELECT MAX(time_column) AS time_value FROM SomeTable
)
ORDER BY time_value DESC;
Cela devrait faire le travail à moins qu'il n'y a pas de lignes dans SomeTable (ou votre SGBD ne supporte pas la notation).
Simplifier par suggestion dans les commentaires - merci!
SELECT MIN(time_column) AS time_value FROM SomeTable
UNION
SELECT MAX(time_column) AS time_value FROM SomeTable
ORDER BY time_value DESC;
Si vous pouvez obtenir deux valeurs d'une requête, vous pouvez améliorer les performances de la requête en utilisant:
SELECT MIN(time_column) AS min_time,
MAX(time_column) AS max_time
FROM SomeTable;
Un très bon optimiseur pourrait être en mesure de traiter les deux moitiés de la version UNION en un passage sur les données (ou index), mais il est assez facile d'imaginer un optimiseur s'attaquant à chaque moitié de l'UNION séparément et traitant les données deux fois. S'il n'y a pas d'index sur la colonne de temps pour accélérer les choses, cela pourrait impliquer deux analyses de table, ce qui serait beaucoup plus lent qu'une analyse de table unique pour la requête à deux valeurs et à une rangée (si la table est assez grande les choses comptent).
Pourquoi s'embêter avec la requête externe? 'SELECT MAX ... UNION ... SELECT MIN ...' devrait faire l'affaire et l'ordre décroissant aussi. – Asaph
Umm ... bonne question - pas sûr pourquoi, maintenant ... –
Pourquoi quelqu'un présume MS SQL Server lorsque la balise sur la question est "MDB"? –
Pourquoi dans deux rangées? Pourquoi pas en une seule ligne avec deux valeurs? –