मैं यह नहीं कह रहा हूं कि चीजों के बारे में जाने का यह सबसे अच्छा तरीका है, लेकिन यह आपके मौजूदा प्रयासों में सबसे कम संशोधन है।
(
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
असल में, मैं सकारात्मक नहीं हूं कि आप पहले दो यूनियन प्रश्नों को मर्ज कर सकते हैं और वही परिणाम प्राप्त कर सकते हैं। मूल क्वेरी में, UNION DISTINCT
. के साथ और मूल में रैंक की अलग गणना, ऐसे रिकॉर्ड जो aye IN ("10")
. को संतुष्ट करते हैं मानदंड शायद अक्सर दो बार दिखाई देंगे (लेकिन विभिन्न रैंक मानों के साथ)।