sql >> Base de Datos >  >> RDS >> Mysql

Enumeración MYSQL:@rownum, registros pares e impares

Son alias de tabla, por lo que no tiene que especificar el nombre completo de la tabla cuando necesite hacer referencia.

Para obtener solo los registros impares, use:

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

Para obtener los registros con números pares, use:

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

Explicación

El % es el operador de módulo en la sintaxis de MySQL:devuelve el resto de la división. Por ejemplo, 1 % 2 es 0,5, mientras que 2 % 2 es cero. Esto luego se usa en la cláusula WHERE para filtrar las filas que se muestran.