2016-07-07 43 views
-2

我想從表中選擇一個值,該值是唯一的和最小從表中選擇

例如一個值,該值是唯一的,並且分,我有一個表(用戶,名稱,價格);我想返回支付最低價格的用戶,價格只重複一次。

價格未知。它是由用戶提供的,因爲它是一次拍賣。

舉例來說,如果我有...

user name price 
1  jo  30 
2  ko  50 
3  lo  30 
4  po  55 

...那麼贏家是用戶2,因爲沒有重複他的價格是最低。 30是最小的,但它是重複的

如何返回用戶2?

回答

0

下面是一個方法來做到這一點。

SELECT 
    * 
FROM MyTable t0 
WHERE t0.id IN 
    (
    SELECT 
    id 
    FROM 
    MyTable 
    GROUP BY value 
    HAVING count(*) = 1 
) 
ORDER BY value 
LIMIT 1 

其中MyTable

| id | name | value | 
|----|------|-------| 
| 1 | jo | 30 | 
| 2 | ko | 50 | 
| 3 | lo | 30 | 
| 4 | po | 55 | 

並且輸出是

| id | name | value | 
|----|------|-------| 
| 2 | ko | 50 | 

子查詢內將提供具有沒有重複的ID。在這種情況下,它將是2,4

+0

而T0替換列字段的名字嗎?它反駁什麼? – wade

+0

我用它,但它返回一個重複值 – wade

+0

't0'是一個別名,在'FROM'子句中有一個隱含的'AS'(可選)。與'FROM MyTable as t0'一樣 - 只是一種快捷鍵入長名稱的方法。僅供參考 - https://en.wikipedia.org/wiki/Alias_(SQL) – DaveCoast

1

嘗試此查詢

select * from category_list where item_price not in(select item_price from category_list where id not in(select id from category_list group by item_price)) order by item_price limit 1 

與字段名