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

inステートメントを使用したMySQLの制限

    ランククエリを使用して、各カテゴリのランクを指定し、クエリの下のカテゴリごとに必要なレコード数でフィルタリングすると、各カテゴリから6つのレコードが得られます

    SELECT t.* FROM
    (SELECT 
      `user_bookmarks`.`id` AS `user_bookmark_id`,
      `bookmark_id`,
      `user_bookmarks`.`user_id`,
      `bookmark_url`,
      `bookmark_website`,
      `bookmark_title`,
      `bookmark_preview_image`,
      `bookmark_popularity`,
      `category_id`,
      `category_name`,
      `pdf_txt_flag`,
      `youtube_video`,
      `content_preview`,
      `snapshot_preview_image`,
      `mode` ,
       @r:= CASE WHEN category_id = @g THEN @r+1  ELSE @r:=1 END `rank` ,
       @g:=category_id
    FROM
      `user_bookmarks` 
      LEFT JOIN `bookmarks` 
        ON `user_bookmarks`.`bookmark_id` = `bookmarks`.`id` 
      LEFT JOIN `categories` 
        ON `user_bookmarks`.`category_id` = `categories`.`id` 
      JOIN (SELECT @r:=0,@g:=0) t1
    WHERE `category_id` IN (164, 170, 172) 
    ORDER BY category_id
    ) t
    WHERE t.rank <=6
    


    1. mysql(i)_real_escape_string、信頼しても安全ですか?

    2. PDO::FETCH_ASSOCからの連想配列値の参照

    3. PHPをMySQLに接続する方法

    4. EMグリッド制御を新しいノードに拡張