Коля Дубр
Новичок
Уникальные значения по одному полю, рандомные - по второму
Есть таблица из двух столбцев, `id` уникальный, а `val` может повторяться. Например такая:
val | id
-------------
aaa | 1
bbb | 2
ccc | 3
aaa | 4
bbb | 5
Необходимо в 1 запрос выбрать рандомно N строк, причем все `val` должны быть разными. Т.е. получить такую таблицу:
val | id
------------
aaa | 4 (или 1)
bbb | 2 (или 5)
ccc | 3
Проблема в том, что если использовать GROUP BY, для каждого уникального `val` всегда будет доставаться одна и та же строка, а именно - первая по времени появления в базе. Соответственно, куда-то нужно внедрить ORDER BY RAND(), есть подозрение, что надо как-то объединять таблицу саму с собой, но никак не могу придумать, как.
Заранее благодарен.
Есть таблица из двух столбцев, `id` уникальный, а `val` может повторяться. Например такая:
val | id
-------------
aaa | 1
bbb | 2
ccc | 3
aaa | 4
bbb | 5
Необходимо в 1 запрос выбрать рандомно N строк, причем все `val` должны быть разными. Т.е. получить такую таблицу:
val | id
------------
aaa | 4 (или 1)
bbb | 2 (или 5)
ccc | 3
Проблема в том, что если использовать GROUP BY, для каждого уникального `val` всегда будет доставаться одна и та же строка, а именно - первая по времени появления в базе. Соответственно, куда-то нужно внедрить ORDER BY RAND(), есть подозрение, что надо как-то объединять таблицу саму с собой, но никак не могу придумать, как.
Заранее благодарен.