Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL-Aufzählung:@rownum, ungerade und gerade Datensätze

Sie sind Tabellenaliasnamen, sodass Sie nicht den gesamten Namen der Tabelle angeben müssen, wenn Sie darauf verweisen müssen.

Um nur die ungeradzahligen Datensätze zu erhalten, verwenden Sie:

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

Um die Datensätze mit gerader Nummer zu erhalten, verwenden Sie:

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

Erklärung

Der % ist der Modulo-Operator in der MySQL-Syntax – er gibt den Rest der Division zurück. Zum Beispiel ist 1 % 2 0,5, während 2 % 2 null ist. Dies wird dann in der WHERE-Klausel verwendet, um die angezeigten Zeilen zu filtern.