有以下sql查询
SELECT service_id, service_box_id FROM table1 WHERE 1 LIMIT 10
结果如下表所示
service_id | service_box_id
12 | 1
12 | 2
12 | 3
21 | 1
21 | 2
33 | 1
33 | 2
33 | 3
33 | 4
33 | 5
因此,查询显示了10行,在本例中,这些行有3个唯一的服务id值-12、21、33。
是否可以在查询中定义“limit”以显示10个唯一的服务id值,而不必在它之前运行另一个sql查询?或者任何其他限制查询输出的方法。
期望输出:
service_id | service_box_id
12 | 1
12 | 2
12 | 3
21 | 1
21 | 2
33 | 1
33 | 2
33 | 3
33 | 4
33 | 5
34 | 1
34 | 2
38 | 1
43 | 1
43 | 2
43 | 3
44 | 1
44 | 2
45 | 1
45 | 2
46 | 1
46 | 2
48 | 1
48 | 2
所以,10个独特的服务标识-12,21,33,34,38,43,44,45,46,48,但总共24行。
3条答案
按热度按时间h79rfbju1#
如果您想要最低的服务id值,那么一个简单的方法是:
uinbv5nw2#
如果我理解正确,你可以尝试使用
Distinct
与LIMIT
在where子查询中。db fiddle视图
kcugc4gi3#
在mysql 8+中,我们可以尝试使用
DENSE_RANK
在这里如果您使用的是早期版本的mysql,那么我们将连接到一个子查询,该子查询将查找前10个
service_id
价值观: