Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

GROUP_CONCAT() या INNER JOIN पर परिणाम सीमित करें

ये उन्नत हैं जो मुझे MySQL से प्यार करते हैं :)

SELECT user_id, user_name, 
    GROUP_CONCAT(CONVERT(photo_id, char(32)) ORDER BY photos.average_rate) as photo_ids
FROM (  SELECT user_id, user_name, photo_id, favorite_count, photo_count, 
            (case when @user_id = user_id then @rownum := @rownum + 1 else CONCAT(@rownum := 1, @user_id := user_id) end) AS dummy_val
        FROM (  SELECT users.user_id, users.user_name, users.favorite_count, users.photo_count, photos.photo_id
                FROM users 
                INNER JOIN photos
                ON photos.user_id=users.user_id
                WHERE users.day_of_birth = DATE_FORMAT('2012-04-17', '%m-%d') 
                    AND users.photo_count > 0 
                ORDER BY users.id ASC, photos.average_rate ASC
             ) AS h, 
             (  @rownum := NULL, 
                @user_id := NULL
             ) AS vars
        HAVING rownum <= 5) AS h2
GROUP BY user_id
ORDER BY favorite_count DESC, photo_count DESC LIMIT 0, 10

मूल रूप से मुझे सभी पंक्तियां मिलती हैं, और गणना की गई पंक्ति में 6 या उससे अधिक की सभी तस्वीरें फेंक देती हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP (MySQL) त्रुटि:चेतावनी:mysql_num_rows () पैरामीटर 1 को संसाधन होने की अपेक्षा करता है

  2. डेटाबेस से कनेक्शन सफल लगता है लेकिन INSERT INTO कोई डेटा नहीं भेजता है

  3. इकाई-विशेषता-मूल्य तालिका डिजाइन

  4. jtable सेल से पैरामीटर का उपयोग करके mysql तालिका को अपडेट करना

  5. PHP - SQL क्वेरी के आसपास सिंगल कोट्स या डबल कोट्स?