@ypercube спасибо, забыл повторно RTFQ после вашего первого комментария, ответ обновлен;)
аюсь объединить два запроса, которые оба содержат ORDER BY. Как я обнаружил, вы не можете делать заказы по запросам, которые являются частью UNION. Я просто не знаю, как еще сделать этот запрос тогда. Позвольте мне объяснить, что я пытаюсь сделать.
Я пытаюсь выбрать 40 самых последних профилей и из этого списка выбрать случайный набор из 20. Затем я хочу объединить это с:Выберите 40 случайных профилей, где профиль не попадает в исходные 40 самых последних профилей, запрошенных в первом набореСлучайно закажите весь набор из 60 записей.Я знаю о последствиях эффективности использования функции Rand ()
SELECT profileId
FROM (SELECT profileId
FROM profile profile2
WHERE profile2.profilePublishDate <= Now()
ORDER BY profile2.profilePublishDate DESC
LIMIT 0,40) AS profile1
ORDER BY RAND()
LIMIT 0,20
UNION (SELECT profileId
FROM profile profile4
WHERE profileId NOT IN (SELECT profileId
FROM profile profile4
WHERE profile4.profilePublishDate <= Now()
ORDER BY profile4.profilePublishDate DESC
LIMIT 0,40)
ORDER BY RAND()
LIMIT 0,40) as profile3
ORDER BY RAND()
ОБНОВЛЕНИЕ: Это решение, основанное на помощи Abhay ниже (спасибо Abhay):
SELECT *
FROM
(
(
SELECT profileId
FROM
(
SELECT profileId
FROM profile profile2
WHERE profile2.profilePublishDate <= Now()
ORDER BY profile2.profilePublishDate DESC
LIMIT 0,40
) AS profile1
ORDER BY RAND()
LIMIT 0,20
)
UNION
(
SELECT profileId
FROM profile profile4
WHERE profileId NOT IN (
SELECT * FROM
(
SELECT profileId
FROM profile profile4
WHERE profile4.profilePublishDate <= Now()
ORDER BY profile4.profilePublishDate DESC
LIMIT 0,40
) AS temp2
)
ORDER BY RAND()
LIMIT 0,40
)
) TEMP
ORDER BY RAND();