Определить, какие поля в ORDER BY RAND() в mysql


Определить, какое поле таблицы будет иметь ORDER BY RAND()

Например: показать данные, случайный в соответствии с полем (id_categoria)

Как я ставлю: WHERE, ORDER BY RAND() id_categoria ???

 4
Author: user3081, 2014-05-15

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
 1
Author: , 2014-05-15 14:46:56

По документации, не удается получить случайные результаты в определенном столбце.

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()

 6
Author: rray, 2020-06-11 14:45:34