-1

我编写了一个包含几个连接的 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
    ------------------------------
4

2 回答 2

2

你可以这样做:

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建议的方式。

于 2013-03-04T13:55:08.170 回答
1
select * from table_name
where rent = (select min(rent) from table_name)
group by title;
于 2013-03-04T14:00:01.997 回答