2010-10-13 5 views
6

Ich bin ein Neuling zu SQL, ich verwende diese Abfrage, um nach dem Mindestwert im Feld Gewicht meiner Tabelle zu suchen.Wie bekomme ich in SQL alle Zeilen, in denen der Wert einer Spalte der niedrigste in der Tabelle ist?

SELECT product_id, 
     MIN(weight) 
    FROM table 
WHERE 1; 

Es zeigt ein Feld mit dem min-Wert, aber nur eins? Aber ich habe viele Produkte mit dem gleichen Mindestgewicht. Gibt es eine Möglichkeit, dass ich angeben kann, dass ich alle anderen Produkte zeigen muss?

+2

Sie möchten Produkte mit dem Mindestgewichtswert für die Tabelle sehen? Wenn es mehr als einen gibt, wollen Sie alle sehen - richtig? Für welche Datenbank? –

+4

Sie wissen, dass Ihre 'where 1' nichts macht, oder? Sie können es entfernen und es wird immer noch genau das gleiche zurückgeben. –

Antwort

16
select * from table where weight = (select MIN(weight) from table) 
+0

Funktioniert gut, danke Fosco! :) – Zenet

+1

+1: sieht gut aus ... – RedFilter

3

Dies kann sein, was Sie fragen nach:

SELECT product_id FROM table WHERE weight = (SELECT MIN(weight) FROM table); 

Wie Sie sich vorstellen können, werden dadurch alle prodict_id s wählen, in dem das Gewicht auf das Mindestgewicht in der Tabelle gleich ist.

1

nicht sicher, welches man genau Sie wollen, aber eine dieser sollte es tun:

SELECT product_id, MIN(weight) FROM table WHERE 1 GROUP BY product_id 

(Liste alle Produkt-IDs und das Mindestgewicht pro ID Produkt)

SELECT product_id, weight FROM table WHERE weight = (SELECT min(weight) FROM table) 

(Finden alle Produkt-IDs, bei denen das Gewicht dem Mindestgewicht entspricht)

SELECT min(weight) FROM table; 

(Das absolute Minimum finden Gewicht, und das ist das)