-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 byグループ ( )titleの「最低家賃」という結果が欲しいです。

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 に答える