Tôi không nói đây là cách tốt nhất để tiếp tục mọi thứ, nhưng đó là cách sửa đổi ít nhất đối với những nỗ lực hiện tại của bạn.
(
SELECT IF(aye IN ("10"), 0, 1) AS sortGroup
, IF(aye IN ("10"), @rank := @rank + 3, @rank1 := @rank1 + 3) AS `rank`
, id, subject, name
FROM quran
, (select @rank := -2) AS rq, (select @rank1 := -1) AS r1q
WHERE MATCH (subject, name) AGAINST ('anything')
)
UNION ALL
(
SELECT 2 AS sortGroup
, @rank2 := @rank2 + 2 `rank`
, id, subject, byA
FROM hadith
, (select @rank2 := 0) AS q
WHERE MATCH (subject) AGAINST ('anything')
)
ORDER BY sortGroup, rank
LIMIT 0, 11
Trên thực tế, tôi không tích cực bạn có thể hợp nhất hai truy vấn hợp nhất đầu tiên và nhận được cùng một kết quả. Trong truy vấn ban đầu, với UNION DISTINCT
và tính toán riêng về thứ hạng trong bản gốc, các bản ghi đáp ứng aye IN ("10")
tiêu chí có thể sẽ thường xuất hiện hai lần (nhưng với các giá trị xếp hạng khác nhau).