Mysql
 sql >> Base de données >  >> RDS >> Mysql

Énumération MYSQL :@rownum, enregistrements pairs et impairs

Ce sont des alias de table, vous n'avez donc pas à spécifier le nom complet de la table lorsque vous devez faire référence.

Pour obtenir uniquement les enregistrements impairs, utilisez :

SELECT x.*
  FROM (SELECT u.pg_id AS ID, 
               u.pg_url AS URL,
               u.pg_title AS Title,
               u.pg_content_1 AS Content,
               @rownum := @rownum + 1 AS rownum
          FROM root_pages u
          JOIN (SELECT @rownum := 0) r
         WHERE u.parent_id = '7'
           AND u.pg_id != '7'
           AND u.pg_cat_id = '2'
           AND u.pg_hide != '1'
      ORDER BY u.pg_created DESC) x
WHERE x.rownum % 2 != 0

Pour obtenir les enregistrements pairs, utilisez :

SELECT x.*
  FROM (SELECT u.pg_id AS ID, 
               u.pg_url AS URL,
               u.pg_title AS Title,
               u.pg_content_1 AS Content,
               @rownum := @rownum + 1 AS rownum
          FROM root_pages u
          JOIN (SELECT @rownum := 0) r
         WHERE u.parent_id = '7'
           AND u.pg_id != '7'
           AND u.pg_cat_id = '2'
           AND u.pg_hide != '1'
      ORDER BY u.pg_created DESC) x
WHERE x.rownum % 2 = 0

Explication

Le % est l'opérateur de module dans la syntaxe MySQL - il renvoie le reste de la division. Par exemple, 1 % 2 vaut 0,5, tandis que 2 % 2 vaut zéro. Ceci est ensuite utilisé dans la clause WHERE pour filtrer les lignes affichées.