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

Номер на ред за резултати от заявка, групирани по колона

Това трябва да е доста ясно.

SELECT (CASE WHEN @fk <> fk_id THEN @row:=1 ELSE @row:[email protected] + 1 END) AS ordinality, 
       @fk:=fk_id, rcv_date
FROM   (SELECT @row:=0) AS r, 
       (SELECT @fk:=0) AS f, 
       (SELECT fk_id, rcv_date FROM files ORDER BY fk_id, rcv_date) AS t

Поръчах чрез fk_id първо, за да гарантирам, че всичките ви външни ключове се събират (ами ако те наистина не са в таблицата?), след това направих предпочитаното от вас подреждане, т.е. до rcv_date . Заявката проверява за промяна в fk_id и ако има такава, тогава променливата номер на ред е зададена на 1 или в противен случай променливата се увеличава. Обработва се в извлечение за случай. Забележете, че @fk:=fk_id се извършва след проверка на регистъра, в противен случай ще се отрази на номера на реда.

Редактиране: Току-що забелязах вашето собствено решение, което се оказа същото като моето. Браво! :)




  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 LEFT JOIN само 1 ред в зависимост от стойността MAX().

  2. MySQL GROUP_CONCAT с нулеви стойности

  3. филтриране на търсене с радио бутон PHP SQL

  4. MySQL пакетни заявки с ограничение

  5. групиране по име на месец в sql