sql >> Database >  >> RDS >> Mysql

MYSQL-opsomming:@rownum, oneven en even records

Het zijn tabelaliassen, dus u hoeft niet de volledige naam van de tabel op te geven wanneer u moet verwijzen.

Om alleen de oneven genummerde records te krijgen, gebruikt u:

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

Gebruik om de even genummerde records te krijgen:

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

Uitleg

De % is de modulus-operator in de MySQL-syntaxis -- het retourneert de rest van de deling. Bijvoorbeeld 1% 2 is 0,5, terwijl 2% 2 nul is. Dit wordt vervolgens gebruikt in de WHERE-component om de weergegeven rijen te filteren.




  1. Een gegevensmodel voor restaurantbezorging

  2. Oracle-weergave meer dan 24 uur

  3. Hoe de RLIKE-operator werkt in MySQL

  4. MySQL-updatekolom alleen als waarde niet leeg is waar