2012-11-13 17 views
20

prega Voglio selezionare i dati da una tabella, in cui un campo specifico ha il valore minimo, ho provato questo:MYSQL come selezionare dati in cui un campo ha un valore minimo

SELECT * FROM pieces where min(price) 

Sono non va bene con MySQL, per favore qualche aiuto? Grazie

+4

questa domanda può avere interpretazioni multiple, si può dare esempio i record con i risultati? –

risposta

41

questo ti darà il risultato che ha il prezzo minimo su tutti i record.

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

prego: D –

+3

Potrebbe essere lento. – abenevaut

28

Questo è come io lo farei (supponendo che ho capito la domanda)

SELECT * FROM pieces ORDER BY price ASC LIMIT 1 

Se si sta tentando di selezionare più righe in cui ciascuno di essi può avere lo stesso prezzo (che è il minimo), allora la risposta di @ JohnWoo dovrebbe essere sufficiente.

Fondamentalmente qui stiamo solo ordinando i risultati per il prezzo in ordine crescente (crescente) e prendendo la prima riga del risultato.

2

Questo funziona anche:

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

(dal momento che questa versione non hai dove condizioni con una sottoquery, potrebbe essere utilizzato se è necessario aggiornare la tabella, ma se hai solo bisogno di selezionare I Lo consiglio a usare la soluzione John Woo)

+0

Sembra che possa essere riutilizzato in una vista –

3

usa CHE HA MIN (...)

Qualcosa di simile:

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

In realtà, dipende da ciò che si vuole ottenere: - Proprio il valore minimo:

SELECT MIN(price) FROM pieces 
  • una tabella (multipli file) whith il valore min: È come ha detto John Woo sopra.

  • Ma, se possono essere diverse righe con lo stesso valore minimo, il migliore è li ordinare da un'altra colonna, perché dopo o poi dovrai farlo (a partire da John Woo answere):

    SELECT * Da pezzi WHERE prezzo = (SELECT MIN (prezzo) da pezzi) ORDER BY magazzino ASC

-4

Per rendere più semplice

SELECT *, MIN (prezzo) DAL LIMITE prod 1

  • Put * in modo verrà visualizzato il record di tutti del valore minimo
+4

In realtà non lo farebbe. * mostrerà valori casuali, non necessariamente dalla riga associata a quel min. –

+2

Completamente d'accordo con Laurentiu L. qui: la maggior parte degli altri DBMS (quindi MySQL) non consente di eseguire tale query senza la clausola 'GROUP BY' appropriata. –

+0

Ciò selezionerà una riga casuale al valore minimo e non è ciò che è stato chiesto! –

Problemi correlati