Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Enumeração MYSQL:@rownum, registros ímpares e pares


Eles são aliases de tabela, portanto, você não precisa especificar o nome inteiro da tabela quando precisar fazer referência.

Para obter apenas os registros numerados ímpares, 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 obter os registros 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

Explicação


O % é o operador de módulo na sintaxe do MySQL -- ele retorna o restante da divisão. Por exemplo, 1% 2 é 0,5, enquanto 2% 2 é zero. Isso é usado na cláusula WHERE para filtrar as linhas exibidas.