sql >> Database >  >> RDS >> Mysql

Hoe de kolomnaam van het resultaat van een minste functie te krijgen?

U kunt een case . gebruiken verklaring:

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

(Opmerking:het zal informatie verliezen over banden.)

Als je geïnteresseerd bent in gelijkspel, is het voldoende om het te benaderen met een subquery en arrays:

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. Is er een manier om een ​​grote waarde in een mysql-database in te voegen zonder max_allowed_packet te wijzigen?

  2. Datums middelen in orakel sql

  3. Hoe de SQL Server DIFFERENCE()-functie werkt

  4. Hoe geneste JSON in SQL Server te selecteren met OPENJSON