2012-11-13 3 views
20

Bitte Ich möchte Daten aus einer Tabelle auswählen, in denen ein bestimmtes Feld den Minimalwert hat, habe ich das versucht:MYSQL, wie die Daten zu wählen, in dem ein Feld einen Minimalwert hat

SELECT * FROM pieces where min(price) 

Ich bin nicht gut mit MySQL, bitte irgendwelche Hilfe? Danke

+4

diese Frage kann mehrere Interpretation anzuzeigen, können Sie beispielsweise Datensätze mit Ergebnissen führen? –

Antwort

41

Dies wird Ihnen Ergebnis, das den Mindestpreis für alle Datensätze hat.

SELECT * 
FROM pieces 
WHERE price = (SELECT MIN(price) FROM pieces) 
+0

Gern geschehen: D –

+3

Das könnte langsam sein. – abenevaut

28

Dies ist, wie ich es tun würde (vorausgesetzt, ich verstehe die Frage)

SELECT * FROM pieces ORDER BY price ASC LIMIT 1 

Wenn Sie mehrere Zeilen auszuwählen versuchen, wo jeder von ihnen kann Haben Sie den gleichen Preis (das ist das Minimum) dann @ JohnWoo Antwort sollte ausreichen.

Grundsätzlich bestellen wir hier nur die Ergebnisse nach dem Kurs in aufsteigender Reihenfolge (steigend) und nehmen die erste Zeile des Ergebnisses.

2

Dies funktioniert auch:

SELECT 
    pieces.* 
FROM 
    pieces inner join (select min(price) as minprice from pieces) mn 
    on pieces.price = mn.minprice 

(da diese Version nicht hat, wo Zustand mit einer Unterabfrage, es verwendet werden könnte, wenn Sie die Tabelle aktualisieren müssen, aber wenn Sie benötigen nur i SELECT würde reccommend John Woo-Lösung)

+0

Es sieht aus wie es in einer Ansicht –

3

verwenden MIT MIN (...)

So etwas wie zu verwenden:

SELECT MIN(price) AS price, pricegroup 
FROM articles_prices 
WHERE articleID=10 
GROUP BY pricegroup 
HAVING MIN(price) > 0; 
1

In der Tat hängt, was Sie wollen: - einfach den Minimalwert:

SELECT MIN(price) FROM pieces 
  • Eine Tabelle (Multiples Zeilen) whith den Min-Wert: Ist wie John Woo oben gesagt.

  • Aber, wenn verschiedene Reihen mit gleichem min Wert sein kann, ist die beste, um sie von einer anderen Spalte, denn nach oder später müssen Sie es tun (ab John Woo answere):

    SELECT * VON Stücke WHERE preis = (SELECT MIN (Preis) FROM Stück) ORDER BY Lager ASC

-4

Um es einfacher

SELECT *, MIN (Preis) FROM prod LIMIT 1

  • Put * so wird es die ganze Aufzeichnung des Minimalwertes
+4

wiederverwendet werden kann, würde es tatsächlich nicht. * zeigt zufällige Werte an, nicht unbedingt aus der Zeile, die diesem Min zugeordnet ist. –

+2

Ich stimme Laurentiu L. vollkommen zu: Die meisten anderen DBMS (damals MySQL) erlaubten Ihnen nicht, eine solche Abfrage ohne die richtige GROUP BY-Klausel auszuführen. –

+0

Dies wird eine zufällige Zeile zu min Wert auswählen und es ist nicht was gefragt wurde! –

Verwandte Themen