172 votes

Sélectionner MySQL minimum/maximum parmi deux (ou plus) valeurs données

Est-il possible de SÉLECTIONNER le minimum ou le maximum parmi deux valeurs ou plus. J'aurais besoin de quelque chose comme ceci:

SÉLECTIONNER MAX_VALUE(A.date0, B.date0) AS date0, MIN_VALUE(A.date1, B.date1) AS date1
DE A, B
OÙ B.x = A.x

Puis-je y parvenir en utilisant uniquement MySQL?

317voto

Elon Than Points 8221

Vous pouvez utiliser les fonctions LEAST et GREATEST pour y parvenir.

SELECT
    GREATEST(A.date0, B.date0) AS date0,
    LEAST(A.date1, B.date1) AS date1
FROM A, B
WHERE B.x = A.x

Les deux sont décrits ici http://dev.mysql.com/doc/refman/5.0/fr/comparison-operators.html

32voto

RandomSeed Points 14960

Je suppose que vous cherchez :

GREATEST()

et

LEAST()

22voto

Steve Childs Points 894

Faites juste attention si NULL risque d'être une valeur de champ ...

SELECT LEAST(NULL,NOW());

et

SELECT GREATEST(NULL,NOW());

retournent tous les deux null, ce qui peut ne pas être ce que vous voulez (surtout dans le cas de GREATEST)

3voto

Mani Points 888

Essayez ceci :

SELECT GREATEST(A.date0, B.date0) AS `date0`,LEAST(A.date0, B.date0) AS `date1`
  FROM A 
  JOIN  B
    ON A.id = B.role;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X