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

Bagaimana cara mendapatkan nama kolom dari hasil fungsi terkecil?

Anda dapat menggunakan case pernyataan:

CASE
WHEN LEAST(q1, q2, q3, q4) = q1 THEN 'q1'
WHEN LEAST(q1, q2, q3, q4) = q2 THEN 'q2'
WHEN LEAST(q1, q2, q3, q4) = q3 THEN 'q3'
ELSE 'q4'
END as minQuestion

(Catatan:itu akan kehilangan informasi karena ikatan.)

Jika Anda tertarik pada ikatan, mendekatinya dengan subquery dan array akan berhasil:

with employee as (
  select id, q1, q2, q3, q4
  from (values
    (1, 1, 1, 3, 4),
    (2, 4, 3, 1, 1)
  ) as rows (id, q1, q2, q3, q4)
)

SELECT least(q1, q2, q3, q4),
       array(
         select q
         from (values (q1, 'q1'),
                      (q2, 'q2'),
                      (q3, 'q3'),
                      (q4, 'q4')
              ) as rows (v, q)
         where v = least(q1, q2, q3, q4)
       ) as minQuestions
FROM employee e
WHERE e.id = 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 Cara untuk "Unhex" sebuah String di MySQL

  2. Terjebak dalam kesalahan 2 dengan mysql menggunakan XAMPP

  3. Apakah ada perbedaan antara DATE_SUB() dan menggunakan operator aritmatika untuk perhitungan datetime?

  4. MySql count() untuk mengembalikan 0 jika tidak ada catatan yang ditemukan

  5. Cara yang benar untuk meneruskan antara 5.000 hingga 100.000 nilai dalam klausa WHERE mysql