2011-09-09 5 views
0

Comment puis-je construire une requête MySQL en utilisant les options SQL_CALC_FOUND_ROWS et DISTINCT?Options de sélection multiple MySQL

+1

Est-ce votre devoir? – Marco

+0

Non ... projet personnel. –

+0

Um, vous les mettez dans la requête? Je ne comprends pas vraiment quelle est la question? –

Répondre

0

SQL_CALC_FOUND_ROWS fonctionne uniquement avec la clause LIMIT et vous permet d'utiliser la fonction d'information FOUND_ROWS() pour rechercher le nombre de lignes de l'ensemble d'enregistrements complet sans exécuter une autre requête pour compter les lignes.

SELECT SQL_CALC_FOUND_ROWS * FROM ... WHERE ... LIMIT X;

SELECT FOUND_ROWS();

Depuis des mots-clés comme DISTINCT, et where conditions affecte réellement l'ensemble d'enregistrement, la fonction SQL_CALC_FOUND_ROWS n'a pas de concept de ce qui est beeing à l'écart. Pour autant que je sache, il n'y a pas de fonctions d'information similaires disponibles pour le mot-clé DISTINCT, vous ne laissant pas d'autre choix que d'exécuter la requête deux fois.

SELECT DISTINCT * FROM ... WHERE ...;

SELECT COUNT(*) FROM ... WHERE ...;


REMARQUE: Vous pouvez toujours utiliser les deux SQL_CALC_FOUND_ROWS et DISTINCT dans la même requête, mais FOUND_ROWS(); ne verrez que ce qui reste par la clause LIMIT.