Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa memesan baris yang dipilih sebagai alternatif?

Silakan coba kueri di bawah ini. Menggunakan ROW_NUMBER() OVER(PARTITION BY ..) menghasilkan peringkat/nomor rekor untuk setiap 'which' item dan urutkan berdasarkan ini. (Semoga ini berhasil untuk Anda, saya tidak memiliki skema tabel atau skrip data sampel untuk dicoba sendiri)

SELECT
  pr1.id AS user_id,
  pr1.title AS user_name,
  pr2.id AS liker_id,
  pr2.title AS liker_name,
  x.which AS which_table,
  x.cnt AS total
FROM 
(
  SELECT rid, rootid, which, COUNT(*) AS cnt
        ,ROW_NUMBER() OVER(PARTITION  BY which ORDER BY rid) AS new_order
  FROM
  (
    SELECT rid, rootid, 'vote' which FROM p_likes
    UNION ALL 
    SELECT rid, rootid, 'comment' which FROM p_comments
    UNION ALL 
    SELECT rid, rootid, 'friend' which FROM relations
  ) y
  WHERE y.rootid = 1246 AND y.rootid <> y.rid
  GROUP BY y.rid, y.rootid, y.which
) x
INNER JOIN pagesroot pr1 on x.rootid = pr1.id
INNER JOIN pagesroot pr2 on x.rid = pr2.id
ORDER BY new_order,x.cnt desc;


  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- memasukkan data biner di mysql menggunakan pernyataan yang disiapkan

  2. Apakah saya menggunakan Java PooledConnections dengan benar?

  3. Bagaimana cara mendeteksi kebuntuan di Mysql / innodb?

  4. php membaca bidang bit mysql mengembalikan karakter aneh

  5. mysql:menemukan baris yang memiliki banyak tag dan id yang sama