Bonjour.

Je voudrais savoir si il est possible (je pense que oui) de faire un tri partiel sur une requête.

exemple : Je possède une table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
CREATE TABLE `table4` (
  `table1ID` int(10) NOT NULL,
  `name` varchar(128) collate utf8_unicode_ci NOT NULL,
  `id1` int(10) NOT NULL,
  PRIMARY KEY  (`table1ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Et je voudrais que dans la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT * FROM `table4` WHERE 1;
Les 6 premiers enregistrement soient triés par rapport à id1 et les suivants triés aléatoirement.
J'ai essayer la requète suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
(SELECT *
FROM `table4`
WHERE id1 <=6
ORDER BY id1)
 
UNION
 
(SELECT *
FROM `table4`
WHERE id1 >6
ORDER BY RAND( ))
Mais RAND() n'a aucun effet, le tri est toujours par 'ORDER BY id1'. Séparément les deux requêtes fonctionnent bien mais leur union désactive l'option 'ORDER BY RAND()'.

Merci.