MySQL Upgrade with Merge with Multiple Merge Features

Conceptual doubt:

I tried a lot of things (MySQL), but the only way this update works is how I described here. It works, but I want to make sure of this:

when we use the connection in the update , and the value I will be set from the table into which it is inserted , and there are more than one connection possibilities for each row, will the update always receive the first possible row to create the connection?

create table letter (id_letter bigint, id_group_table bigint, letter char(1));  
create table group_table (id_group_table bigint, id_whatever bigint, champion char(1));
create table whatever (id_whatever bigint);

insert into whatever values (1);
insert into whatever values (2);
insert into whatever values (3);
insert into whatever values (4);
insert into whatever values (5);

insert into group_table values(1, 1, null); -- champion should be B
insert into group_table values(2, 2, null); -- champion should be C
insert into group_table values(3, 3, null); -- champion should be X
insert into group_table values(4, 4, null); -- champion should be C
insert into group_table values(5, 5, null);

insert into letter values(1,1,'A');
insert into letter values(2,1,'B');
insert into letter values(3,1,'B');

insert into letter values(4,2,'B');
insert into letter values(5,2,'C');
insert into letter values(6,2,'C');

insert into letter values(7,3,'X');
insert into letter values(8,3,'X');
insert into letter values(9,3,'Y');

insert into letter values(10,4,'A');
insert into letter values(11,4,'A');
insert into letter values(12,4,'C');

insert into letter values(13,4,'C');
insert into letter values(14,4,'C');
insert into letter values(15,4,'C');

insert into letter values(16,5,'B');
insert into letter values(17,5,'C');
insert into letter values(18,5,'C');

-- update to set champions for everybody

update group_table 
join
  (select  letter,
  id_group_table, 
  count(letter) as occurences
  from letter
  group by id_group_table, letter 
  order by occurences desc
  ) tab on group_table.id_group_table = tab.id_group_table

set champion = tab.letter
where group_table.id_whatever in (1,2,3,4);

http://sqlfiddle.com/#!2/6ea061/1

Thank!!

+4
source share
1

:

, .

, , , , . , , id_group_table. SO, , .

+1

All Articles