sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor ydre rækkefølge ved ikke fungerer korrekt?

Jeg siger ikke, at dette er den bedste måde at gøre tingene på, men det er den mindste ændring af dine eksisterende forsøg.

(
  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

Faktisk er jeg ikke sikker på, at du kan flette de første to forenede forespørgsler og få de samme resultater. I den oprindelige forespørgsel med UNION DISTINCT og den separate beregning af rang i originalen, poster, der opfylder aye IN ("10") kriterier vil sandsynligvis ofte optræde to gange (men med forskellige rangværdier).




  1. Sådan opretter du forbindelse til SQL-serverdatabase fra en Windows 10 UWP-app

  2. Hvordan opretter jeg forbindelse til en Oracle-database i R?

  3. Primær nøglesortering

  4. Sådan opretter du bruger i MySQL