Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chọn N bản ghi ngẫu nhiên cho mỗi nhóm

Tôi đã xóa các thông số tabella và campo khỏi quy trình chỉ để làm cho nó dễ hiểu hơn. Tôi chắc rằng bạn có thể mang chúng trở lại.

delimiter //
drop procedure if exists casualiPerGruppo //
create procedure casualiPerGruppo(in numPerGruppo int)
begin
declare valore int;
declare finite int default 0;
declare query_part varchar(200);
declare query_union varchar(2000);
declare cur_gruppi cursor for select distinct id_gruppo from prova;
declare continue handler for not found set finite = 1;

create temporary table resultset (id int, id_gruppo int, altro varchar(10));

set @query_part = 'select id, id_gruppo, altro from (select id, id_gruppo, altro from prova where id_gruppo = @id_gruppo order by rand() limit @numPerGruppo) [email protected]_gruppo';
set @query_part = replace(@query_part, '@numPerGruppo', numPerGruppo);
set @query_union = '';

open cur_gruppi;
mio_loop:loop
fetch cur_gruppi into valore;
    if finite = 1 then
        leave mio_loop;
    end if;

set @query_union = concat(@query_union, concat(' union ', @query_part));
set @query_union = replace(@query_union, '@id_gruppo', valore);

end loop;
close cur_gruppi;

set @query_union = substr(@query_union, 8);
set @query_union = concat('insert into resultset ', @query_union);

prepare stmt from @query_union;
execute stmt;
deallocate prepare stmt;
select * from resultset order by id_gruppo, altro;
drop table resultset;

end //
delimiter ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để đồng bộ hóa hai bảng MySQL có cấu trúc giống nhau và máy chủ khác nhau

  2. Làm thế nào để sử dụng GROUP BY để nối các chuỗi trong MySQL?

  3. Dự án Java đã hoàn thành, hiện đang tạo tệp jar hoặc .exe (với Cơ sở dữ liệu)

  4. Java Server Pages - đối chiếu khi chèn vào MySql?

  5. Thay đổi bảng hoặc đặt lại tự động tăng bằng CDbMigration