Определить, какие поля в ORDER BY RAND() в mysql
Определить, какое поле таблицы будет иметь ORDER BY RAND()
Например: показать данные, случайный в соответствии с полем (id_categoria)
Как я ставлю: WHERE, ORDER BY RAND() id_categoria ???
2 answers
Будем говорить, что ваша таблица имеет структуру:
CREATE TABLE `cliente` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(50) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=latin1$$
Будет выглядеть SQL так, потому что хочу, чтобы он просто сделайте rand() в id
SELECT a.id, b.nome from (SELECT id FROM cliente ORDER BY rand()) a join cliente b on b.id = a.id
В вашем случае (например, не известны полностью их структуры)
SELECT a.id_categoria, b.* FROM (SELECT id_categoria, a.id FROM tabela ORDER BY rand()) a join tabela b on b.id = a.id
По документации, не удается получить случайные результаты в определенном столбце.
You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times. However, you can retrieve rows in random order like this:
mysql> SELECT * FROM tbl_name ORDER BY RAND()
Вы не можете использовать столбец с значения RAND () в предложении ORDER BY, потому что ORDER BY думаете столбец несколько раз. Тем не менее, вы можете восстановить линии в случайном порядке, как это:
mysql> SELECT * FROM tbl_name ORDER BY RAND()