gpt4 book ai didi

mysql - 选择 n 个随机组,每组 n 行

转载 作者:行者123 更新时间:2023-11-29 02:32:23 24 4
gpt4 key购买 nike

我有这张表services,数据如下:

service_id  bepro_id    service_name
1 1 Virtuales
2 2 Logos1
3 3 Diseño C
4 1 Formatos A3
203 77 Dasdad
6 2 Publi
8 4 edificios Vi
9 3 Maquillaje D
10 7 Servicio 10 Serv
11 4 servicio 11 tittle
14 3 Lorem ipsum dol
15 30 servicio 15 title
16 4 Titulo TituloTitulo
17 8 servicio 17 title ñ
19 11 Retoques digital
20 4 servicio 20 title
26 5 service 26 title
27 7 servicio 27 tittle
183 3 Excepteur sint occaecat
188 3 Duis aute irure dolor
185 3 Cillum dolore eu fugiat
186 3 Eserunt mollit anim i
190 3 Lorem ipsum dolor
191 3 general para ed
192 3 Ingenieria
193 3 letras
194 2 bocetos
196 60 Retoque fotografico
199 60 Maquetacion de
198 28 Revistas en General

我想从 bepro_id 中的 8 个不同的随机值中选择每个 bepro_id 每个值 1 到 8 个(最小 1,最大 8)。

我的意思是最多 64 行或最少 8 行。然后我必须加入表“用户”,其中 services.bepro_id=users.users_id 。

@Andomar 下面的每个值只选择一个随机行(每个值我需要最少 1 个最多 8 个值)对我有很大帮助,但似乎不起作用,它看起来很复杂,是唯一的我能做什么?:

SELECT * FROM  `services` GROUP BY bepro_id ORDER BY RAND( ) LIMIT 8

提前致谢

最佳答案

您可以使用 MySQL 变量技巧来用行号标记每一行。 inner join 可用于将结果限制为 N 倍。下面的示例为 3 个随机 bepro 返回 1-2 个随机服务。更改这些值应该很容易。

感谢@Andomar,这就是我需要的:

select  *
from (
select distinct bepro_id
from services
order by
rand()
limit 8 -- Eight random bepro_id's
) bepro
join (
select if(@last_bepro = bepro_id, @rn := @rn + 1, @rn := 1) as rn
, (@last_bepro := bepro_id)
, service_id
, bepro_id
, service_name
from services
cross join
(select @rn := 0, @last_bepro := -1) r
order by
bepro_id
) serv
on serv.bepro_id = bepro.bepro_id
join users
on users.id = bepro.bepro.id
where serv.rn <= 8 -- 8 services max , 1 min per bepro_id
order by
rand();

Live example at SQL Fiddle.

关于mysql - 选择 n 个随机组,每组 n 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11180326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com