繁体   English   中英

如何从mysql中的表中获取具有最小价值的行

[英]how to get row having least value from a table in mysql

我写了一个包含几个联接的mysql查询,结果如下。

id | title | type   |    rent
------------------------------
1    abc     low         100
2    xyz     low         200
2    xyz     mid         150
2    xyz     high        300
3    mno     low         600
3    mno     mid         200

我想让那个组( group bytitle具有“最低租金”的结果。

PLZ帮助。


我想要以下结果集

    id | title | type    |    rent
    ------------------------------
    1  |  abc  |   low  |     100
    ------------------------------
    2  |  xyz  |   mid  |     150
    ------------------------------
    3  |  mno  |   mid  |     200
    ------------------------------

你可以这样做:

SELECT t1.*
FROM tablename AS t1
INNER JOIN
(
   SELECT title, MIN(rent) AS minrent
   FROM tablename
   GROUP BY title 
) AS t2  ON t1.title = t2.title 
        AND t1.rent  = t2.minrent;

SQL小提琴演示

这将为您提供:

| ID | TITLE | TYPE | RENT |
----------------------------
|  1 |   abc |  low |  100 |
|  2 |   xyz |  mid |  150 |
|  3 |   mno |  mid |  200 |

这样每个title租金最少。


但是:如果您只寻找rent最近的瓷砖,则可以执行以下操作:

SELECT t1.*
FROM tablename AS t1
ORDER BY rent  
LIMIT 1

更新了SQL Fiddle演示

这将为您提供这一行:

| ID | TITLE | TYPE | RENT |
----------------------------
|  1 |   abc |  low |  100 |

请注意:如果有重复的Rent与最低租金相同,则不会为您提供这些重复。 在这种情况下,请使用@ user2009463建议的方式。

select * from table_name
where rent = (select min(rent) from table_name)
group by title;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM