sql >> データベース >  >> RDS >> Mysql

MYSQL列挙型:@ rownum、奇数および偶数レコード

    これらはテーブルエイリアスであるため、参照する必要があるときにテーブルの名前全体を指定する必要はありません。

    奇数番号のレコードのみを取得するには、次を使用します:

    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
    

    偶数のレコードを取得するには、次を使用します:

    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
    

    説明

    % MySQL構文のモジュラス演算子です。除算の余りを返します。たとえば、1%2は0.5ですが、2%2はゼロです。次に、これをWHERE句で使用して、表示される行をフィルタリングします。




    1. SQL Serverのデフォルトの日付タイムスタンプ?

    2. SQLiteは14のエラーコードを返しました

    3. URLを書き換え、クエリ文字列のIDをタイトルに置き換えます

    4. PHP / MySQLiを使用してMySQL整数列にNULLを取得するにはどうすればよいですか?