在mysql中选择limitresult

在mysql中选择limitresult,mysql,select,limit,Mysql,Select,Limit,我有一个包含以下数据的表格: Id City Amount 1 London 25000 2 New York 20000 3 London 23000 4 Paris 22000 5 Moscow 18000 6 London 21000 7 New York 19000 8 Moscow 26000 9 London 24000 10 Moscow

我有一个包含以下数据的表格:

Id  City        Amount
1   London      25000
2   New York    20000
3   London      23000
4   Paris       22000
5   Moscow      18000
6   London      21000
7   New York    19000
8   Moscow      26000
9   London      24000
10  Moscow      16000
11  London      15000
12  Moscow      23000
13  Paris       19000
14  New York    15000
15  London      26000
我必须创建SQL作为什么才能得到这样的结果

Id  City        Amount
1   London      25000
2   New York        20000
3   London      23000
4   Paris       22000
5   Moscow      18000
7   New York        19000
8   Moscow      26000
13  Paris       19000
这意味着我只想得到一个城市最多只出现2次

我只想得到前两张唱片或者最后两张唱片

谢谢

如果您的MySQL版本<8.0,您可以使用模拟行数功能。为了实现基于分组的功能划分,我们将使用两个会话变量,一个用于行号,另一个用于存储旧城市,将其与当前城市进行比较,如果属于同一城市组,则将其递增1,否则重置为1

下面的代码将获得前两条记录。通过将查询中的2更改为n,可以轻松地将其更改为获取前n条记录

SET @row_number = 0;
SET @city_var = '';
SELECT inner_nest.Id, 
       inner_nest.City, 
       inner_nest.Amount 
FROM (
      SELECT 
            @row_number:=CASE 
                             WHEN @city_var = City THEN @row_number + 1
                             ELSE 1
                         END AS num, 
            Id, 
            @city_var:=City as City, 
            Amount
      FROM
          table_name
      ORDER BY 
              City) AS inner_nest 
WHERE inner_nest.num <= 2 
ORDER BY inner_nest.Id ASC 
**


**

我不在乎数量,我只想得到前2条记录或最后2条记录records@MrNinh我已经完全编辑了我的代码。检查解决方案。如果你使用MySQL版本<0,我如何得到2的最后记录?@ MrNinh,请考虑将此标记为“接受的回答绿色嘀嗒”。谢谢我会在事后编辑答案,并添加您对最后2条记录的要求“前两条记录或最后两条记录”-或任意随机2?不随机,只接受前2条或后2条。如果您的mysql版本不是8.0或更高版本,则可以使用行数模拟。如果你用谷歌搜索mysql的行号,你会发现很多例子。@MrNinh你的mysql版本是什么?