2010-10-13 27 views
6

Tôi là người mới sử dụng SQL, tôi đang sử dụng truy vấn này để tìm giá trị tối thiểu trong trọng lượng trường của bảng.Trong SQL, làm cách nào để có được tất cả các hàng có giá trị của cột thấp nhất trong bảng?

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

Nó hiển thị một trường có giá trị nhỏ nhất, nhưng chỉ có một trường? Nhưng tôi có nhiều sản phẩm có cùng trọng lượng tối thiểu. Có cách nào tôi có thể chỉ định rằng tôi cần hiển thị tất cả các sản phẩm khác không?

+2

Bạn muốn xem các sản phẩm có giá trị trọng lượng tối thiểu cho bảng? Nếu có nhiều hơn một, bạn muốn nhìn thấy tất cả - chính xác? Cơ sở dữ liệu nào? –

+4

Bạn nhận ra rằng 'nơi 1' của bạn không làm bất cứ điều gì, phải không? Bạn có thể xóa nó và nó vẫn sẽ trả về chính xác như cũ. –

Trả lời

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

Hoạt động tuyệt vời, cảm ơn Fosco! :) – Zenet

+1

+1: có vẻ tốt ... – RedFilter

3

Đây có thể là những gì bạn đang yêu cầu cho:

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

Như bạn có thể đoán, điều này sẽ chọn tất cả prodict_id là nơi trọng lượng tương đương với trọng lượng tối thiểu trong bảng.

1

Không chắc cái nào chính xác mà bạn muốn, nhưng một trong những nên làm các trick:

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

(Liệt kê tất cả các ID sản phẩm và trọng lượng tối thiểu cho mỗi ID sản phẩm)

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

(Tìm tất cả các ID sản phẩm có trọng lượng bằng trọng lượng tối thiểu)

SELECT min(weight) FROM table; 

(Tìm mức tối thiểu tuyệt đối trọng lượng, và đó là điều đó)

Các vấn đề liên quan