Tôi đang cố gắng UNION hai truy vấn có chứa cả ORDER BY. Như tôi đã phát hiện, bạn không thể đặt hàng bằng các truy vấn là một phần của UNION. Tôi chỉ không biết cách khác để thực hiện truy vấn này sau đó. Hãy để tôi giải thích những gì tôi đang cố gắng làm.MySQL UNION 2 truy vấn chứa ORDER BYs
- Tôi cố gắng để chọn 40 hồ sơ mới nhất và từ danh sách đó chọn một tập hợp ngẫu nhiên của 20. sau đó tôi muốn đoàn rằng với:
- Chọn 40 hồ sơ ngẫu nhiên mà hồ sơ không rơi vào 40 hồ sơ gần đây nhất được truy vấn trong tập đầu tiên
- Sắp xếp ngẫu nhiên toàn bộ 60 bản ghi đó.
Tôi nhận thức được hậu quả hiệu quả của việc sử dụng) chức năng (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()
UPDATE: Đây là giải pháp dựa vào sự giúp đỡ Abhay của dưới đây (nhờ 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();
Cảm ơn - Giải pháp của bạn đã giải quyết được vấn đề của tôi, tuy nhiên một lỗi mới phát sinh (Phiên bản MySQL này chưa hỗ trợ 'LIMIT & IN/ALL/ANY/MỘT SỐ truy vấn phụ ') mà tôi cũng đã giải quyết với một lựa chọn khác và đăng truy vấn đầy đủ ở trên trong bài đăng gốc của tôi. Cảm ơn sự giúp đỡ của bạn trong việc giải quyết vấn đề này. – Cheeky
@Cheeky: Có, đây là cách để giải quyết nó, với những hạn chế mà MySQL đặt ra :) –