2012-11-13 11 views
20

Proszę chcę zaznaczyć dane z tabeli, gdzie specyficzne pole ma wartość min, próbowałem to:MYSQL jak wybrać danych gdzie pole ma wartość min

SELECT * FROM pieces where min(price) 

jestem nie jest dobry z MySQL, proszę o jakąkolwiek pomoc? Dzięki

+4

kwestia ta może mieć wiele interpretacji, można dać przykładowe zapisy z wyników? –

Odpowiedz

41

da to wynik, który ma minimalną cenę dla wszystkich rekordów.

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

Nie ma za co: D –

+3

To może być powolne. – abenevaut

28

To w jaki sposób to zrobić (zakładając rozumiem pytanie)

SELECT * FROM pieces ORDER BY price ASC LIMIT 1 

Jeśli chcesz, aby wybrać wiele wierszy, gdzie każdy z nich może mają tę samą cenę (co jest minimum), wtedy wystarczy odpowiedź @ JohnWoo.

Zasadniczo tutaj po prostu zamawiamy wyniki według ceny w porządku ASCending (zwiększenie) i biorąc pierwszy wiersz wyniku.

2

Działa to również:

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

(ponieważ ta wersja nie ma gdzie stan z podzapytania, to może być stosowane, jeżeli chcesz zaktualizować tabelę, ale jeśli wystarczy wybierz opcję polecam w użyciu rozwiązanie John Woo)

+0

Wygląda na to, że może być ponownie użyty w widoku –

3

Zastosowanie MIEĆ MIN (...)

Coś jak:

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

W rzeczywistości, zależy co chcesz uzyskać: - tylko wartości min:

SELECT MIN(price) FROM pieces 
  • tabeli (wielokrotności wierszach) whith wartości min: Czy jak powiedział John Woo powyżej.

  • Ale, jeśli mogą być różne wiersze z samej wartości min, najlepiej zamówić je od innej kolumny, bo przecież czy później trzeba będzie to zrobić (począwszy od John Woo answere):

    SELECT * Z kawałków GDZIE cena = (SELECT MIN (cena) z kawałków) ORDER BY stanie ASC

-4

Aby uprościć

SELECT * MIN (cena) FROM prod LIMIT 1

  • Put * więc będzie wyświetlany cały zapis minimalnej wartości
+4

W rzeczywistości nie. * wyświetli losowe wartości, niekoniecznie z wiersza powiązanego z tą min. –

+2

Całkowicie zgadzam się z Laurentiu L. tutaj: większość innych DBMS (wtedy MySQL) nie pozwoliłoby na uruchomienie takiego zapytania bez odpowiedniej klauzuli "GROUP BY". –

+0

Spowoduje to wybranie losowego wiersza na wartość minimalną i nie jest to pytanie, które zostało zadane! –

Powiązane problemy