2016-03-29 3 views
0

Was möchten Sie erhalten erwarten beim Laufen -Was das erwartete Verhalten von Agg Funktionen mit SELECT * ist (SQL)

select *, max(col1) from table1; 

Was würden Sie

  1. nur die Zeile mit dem bekommen erwarten max (col1)
  2. alle Zeilen mit dem max (col1) Wert neben ihnen

Ist das anders zwischen den verschiedenen DB s?

+1

Ein Fehler ... (Spalte table1.col1, auf die in der GROUP BY-Klausel nicht verwiesen wird.) – jarlh

+0

Lesen Sie die [docs] (https://dev.mysql.com/doc/refman/5.0/en/group-by- handling.html): Es erklärt, wie mySQL die group by-Klausel erweitert, die sich anders als andere RDBMS-Systeme verhalten würde; es sei denn, Sie haben diese Funktion deaktiviert, die standardmäßig aktiviert ist. – xQbert

Antwort

2

Wenn Sie eine Zeile mit dem Maximalwert von col1 möchten, verwenden Sie dann order by und limit:

select t1.* 
from table1 t1 
order by col1 desc 
limit 1; 

In MySQL, Ihre Abfrage würde eine Zeile mit unbestimmten Werte für alle Spalten dargestellt Rückkehr von * mit der maximaler Wert von col1. In anderen Datenbanken würde es einen Fehler zurückgeben.

Verwandte Themen