sql >> Databasteknik >  >> RDS >> Mysql

MYSQL-uppräkning:@rownum, udda och jämna poster

De är tabellalias, så du behöver inte ange hela namnet på tabellen när du behöver göra referenser.

Använd:

för att bara få de udda numrerade posterna
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

För att få de jämna numrerade posterna, använd:

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

Förklaring

% är moduloperatorn i MySQL-syntax -- den returnerar resten av divisionen. Till exempel är 1 % 2 0,5, medan 2 % 2 är noll. Detta används sedan i WHERE-satsen för att filtrera raderna som visas.




  1. mysql.connector.errors.ProgrammingError:1064 (4200):Du har ett fel i din SQL-syntax;

  2. Flerkolumnindex på 3 fält med heterogena datatyper

  3. Hur kan jag använda "Check"-satsen för att validera fältvärdet i mysql?

  4. GroupBy efter orderBy för komplicerad fråga i Laravel