Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để lấy tên cột của kết quả của một hàm nhỏ nhất?

Bạn có thể sử dụng case tuyên bố:

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

(Lưu ý:nó sẽ làm mất thông tin qua các mối quan hệ.)

Nếu bạn quan tâm đến các mối quan hệ, hãy tiếp cận nó bằng một truy vấn con và các mảng sẽ thực hiện được mẹo:

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. trong đó 1 =1 câu lệnh

  2. Nhận hồ sơ của tháng hiện tại

  3. onbeforeprint () và onafterprint () tương đương cho các trình duyệt không phải IE

  4. Chỉ trả lại hàng nếu giá trị không tồn tại

  5. JavaScript có thể kết nối với MySQL không?