Выбрать уникальные, сделать JOIN

Добрый день.
Есть две таблички, связаны по ключу с отношением 1 к многим.
Мне надо из первой таблички выбрать несколько случайных записей, и со второй таблички, используя эти записи как ключ, выбрать случайные элементы.

select idx
from location
order by random()
limit 5

"idx"
"123"
"126"
"118"
"104"
"102"

Возвращает мне 5 случайных значений.

select location.idx, item.idx
from location
left join item on (item.location_idx = location.idx)
order by random()
limit 5

"idx" "idx_1"
"102" "2460655269"
"114" "2469438503"
"107" "2454449966"
"102" "2460805191"
"114" "2461055842"

Теперь записи из первой таблицы могут быть не уникальными.

Что за чепуха и как мне составить правильный запрос?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

> Что за чепуха не чепуха, а

> Что за чепуха
не чепуха, а то что просили, то и выполнилось. order by выполняется после выполнения всех других операций над итоговым списком строк.

> и как мне составить правильный запрос
как вариант подзапросом сделать

SELECT location.idx, item.idx
FROM location
LEFT JOIN item ON item.location_idx = location.idx WHERE location.idx IN
(SELECT idx FROM location ORDER BY random() LIMIT 5)

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023