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

SQL Получаване на целия ред въз основа на минималната стойност на изчислената колона

Заявката по-долу работи, но е по-добре да помислите за замяна на състоянието на колоната с status_code с кода и имат отделна таблица status(status_code,description) {денормализиране}

И индексиране (term_id,statUs_code ).

чрез това можем просто да се присъединим. Вместо да създавате изглед като този.

SELECT * FROM
(SELECT *,(CASE sample.status
                         WHEN 'Arrived' THEN 1
                         WHEN 'Active' THEN 2
                         WHEN 'Pending Approval' THEN 3
                         WHEN 'Pending Confirmation' THEN 4
                         WHEN 'Pending Manual' THEN 5
                         WHEN 'Denied' THEN 6
                         WHEN 'Canceled' THEN 7
                END) AS status_code FROM SAMPLE
  WHERE sample.term_id = 29
) my_view1,
(SELECT BED_ID,MIN(CASE sample.status
                         WHEN 'Arrived' THEN 1
                         WHEN 'Active' THEN 2
                         WHEN 'Pending Approval' THEN 3
                         WHEN 'Pending Confirmation' THEN 4
                         WHEN 'Pending Manual' THEN 5
                         WHEN 'Denied' THEN 6
                         WHEN 'Canceled' THEN 7
                END) AS status_code FROM SAMPLE
 WHERE sample.term_id = 29
 GROUP BY BED_ID
) my_view2
WHERE my_view1.bed_id = my_view2.bed_id
 AND  my_view1.status_code = my_view2.status_code



  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 връща неправилен bigint резултат с една, много странна грешка

  2. MySQL прокси алтернативи за разделяне на база данни

  3. Увийте елементите на масива в divs въз основа на същата стойност

  4. MySQL + PHP:извличане на данни с помощта на външни ключове

  5. Mysql select recursive get all child с множество нива