Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL Pobierz cały wiersz na podstawie minimalnej wartości obliczonej kolumny

Poniższe zapytanie działa, ale lepiej rozważyć zamianę stanu kolumny na status_code z kodem i mieć oddzielną tabelę status(status_code,description) {denormalizacja}

I indeksowanie (term_id,statUs_code ).

dzięki temu możemy po prostu dołączyć. Zamiast tego utwórz widok taki jak ten.

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. Zapytanie SQL, aby sprawdzić typ produktu w WooCommerce

  2. Konwencje nazewnictwa PHP/MySQL:camelCase vs under_score?

  3. MySQL AUTO_INCREMENT nie wycofuje się

  4. Wstawianie NULL do znacznika czasu MySQL

  5. Dlaczego mój cfloop zatrzymuje się po wstawieniu pierwszego identyfikatora?