2009-12-17 7 views
8

Wie finden Sie das Maximum von zwei expliziten Werten in MySQL? Etwas wie MAXIMUM (1, @foo).Einfache Max Math Funktion in MySQL

Es gibt Gruppenfunktionen wie MAX, MIN, AVG usw., die den Spaltennamen als Argument verwenden und mit Ergebnismengen arbeiten. Ist es möglich, zwei explizite Werte in eine Ergebnismenge zu konvertieren und diese Funktionen zu verwenden? Einige andere Möglichkeiten?

P.S .: Ich brauche eine Max-Funktion für eine meiner gespeicherten Prozeduren.

Antwort

24

Wie das Maximum von zwei explizite Werte in MySQL zu finden? Etwas wie MAXIMUM (1, @foo).

Verwenden Sie die GREATEST Funktion:

GREATEST(1, @foo) 

... kehrt je nachdem, welcher Wert größer ist - wenn 1 größer als der Wert in @foo ist, Sie 1. Ansonsten bekommen, werden Sie Erhalten Sie den Wert, der in @foo ist. Außerdem ist es nicht eine Aggregatfunktion.

Die Alternative wäre eine CASE-Anweisung zu verwenden:

CASE WHEN 1 > @foo THEN 1 ELSE @foo END 

... weil CASE ANSI-Standard ist -, die auf Oracle, MySQL, SQL Server, Postgres ...

+0

Gegen arbeiten ist [link] (https://dev.mysql.com/doc/refman/5.7/de/comparison-operators.html#function_least) LEAST – Andrei

2

können Sie IF(1 > @foo,1,@foo) verwenden