在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版本是什么?