sql >> Database >  >> RDS >> Mysql

Waarom werkt de buitenste bestelling door niet correct?

Ik zeg niet dat dit de beste manier is om dingen aan te pakken, maar het is de minste wijziging van je bestaande pogingen.

(
  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

Eigenlijk ben ik er niet zeker van dat je de eerste twee samengevoegde zoekopdrachten kunt samenvoegen en dezelfde resultaten kunt krijgen. In de oorspronkelijke zoekopdracht, met UNION DISTINCT en de afzonderlijke berekening van rang in het origineel, records die voldoen aan de aye IN ("10") criteria zullen waarschijnlijk vaak twee keer voorkomen (maar met verschillende rangordewaarden).




  1. Lege parameterlijst IN-clausule in MySQL

  2. Hoe het n-de woord extraheren en woordexemplaren tellen in een MySQL-tekenreeks?

  3. Hoe te repareren "EXECUTE-instructie is mislukt omdat de WITH RESULT SETS-clausule 1 resultaatset (s) heeft gespecificeerd ..." in SQL Server

  4. Symfony2 Doctrine PDO MySQL Verbinding met LOAD DATA LOKAAL INFILE