Mysql
 sql >> Database >  >> RDS >> Mysql

Enumerazione MySQL:@rownum, record dispari e pari

Sono alias di tabella, quindi non devi specificare il nome completo della tabella quando devi fare riferimento.

Per ottenere solo i record dispari, utilizza:

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

Per ottenere i record con numero pari, utilizzare:

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

Spiegazione

Il % è l'operatore modulus nella sintassi MySQL -- restituisce il resto della divisione. Ad esempio 1 % 2 è 0,5, mentre 2 % 2 è zero. Questo viene quindi utilizzato nella clausola WHERE per filtrare le righe visualizzate.