Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да подредя алтернативно избрани редове

Моля, опитайте тази заявка по-долу. Използване на ROW_NUMBER() OVER(PARTITION BY ..) генерира номер на ранг/запис за всеки 'which' елементи и сортирайте въз основа на това. (Надявам се, че това ще ви свърши работа, нямам схема на таблица или примерен скрипт с данни, за да опитам сам)

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. MySQL 'secure-file-priv' не позволява зареждане на файл с данни, дори от разпределената безопасна папка

  2. свържете се с mysql с c#.net

  3. Изчерпателно ръководство за това как да използвате MySQL

  4. Импортиране на текст в MySQL:странен формат

  5. Mysql WHERE проблем със списък, разделен със запетая