2016-07-07 45 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 

与字段名