Ciao a tutti. Sono alle prese con un problema almeno per me inspiegabile.

Posto un dump di esempio

codice:
DROP TABLE IF EXISTS `domande`;

CREATE TABLE `domande` (
  `id_domanda` int(11) NOT NULL auto_increment,
  `domanda` varchar(255) default NULL,
  PRIMARY KEY  (`id_domanda`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;

/*Data for the table `domande` */

insert into `domande` (`id_domanda`,`domanda`) values (1,'a');
insert into `domande` (`id_domanda`,`domanda`) values (2,'b');
insert into `domande` (`id_domanda`,`domanda`) values (3,'c');

/*Table structure for table `risposte` */

DROP TABLE IF EXISTS `risposte`;

CREATE TABLE `risposte` (
  `id_risposta` int(11) NOT NULL auto_increment,
  `id_domanda` int(11) default NULL,
  `risposta` varchar(255) default NULL,
  `corretta` tinyint(4) default NULL,
  `answer` tinyint(4) default NULL,
  PRIMARY KEY  (`id_risposta`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;

/*Data for the table `risposte` */

insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (1,1,'aaaa',1,1);
insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (2,1,'bbbb',0,0);
insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (3,1,'cccc',0,0);
insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (4,1,'dddd',0,0);
insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (5,2,'eeee',1,1);
insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (6,2,'ffff',0,0);
insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (7,2,'gggg',0,0);
insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (8,2,'hhhh',1,0);
insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (9,3,'iiii',1,1);
insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (10,3,'llll',0,0);
insert into `risposte` (`id_risposta`,`id_domanda`,`risposta`,`corretta`,`answer`) values (11,3,'mmmm',0,0);
Vorrei ottenere un ordinamento delle domande casuale, quindi ad esempio prima tutte le domande con id_domanda = 3, poi 1, poi 2 e così via.

Ho scritto queste due query:

codice:
set @cas = (select group_concat(id_domanda order by rand()) from domande);
select * from risposte
order by field(id_domanda,@cas)
che però danno un risultato sballato, nel senso che gli id_domanda risultano mischiati.
Se invece alla variabile @cas sostituisco la stringa che viene generata dalla stessa query

codice:
select * from risposte
order by field(id_domanda,3,1,2)
l'ordine viene rispettato. Come mai?

Ciao e grazie.

edit. Integrando la query col php e usando la funzione shuffle() nell'order by field() tutto funziona a dovere ma vorrei capire il perchè di questo comportamento.