Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego zamówienie zewnętrzne według nie działa poprawnie?

Nie mówię, że jest to najlepszy sposób na zajęcie się rzeczami, ale jest to najmniejsza modyfikacja istniejących prób.

(
  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

Właściwie nie jestem przekonany, że możesz połączyć dwa pierwsze zapytania połączone i uzyskać te same wyniki. W pierwotnym zapytaniu z UNION DISTINCT i oddzielne obliczenie rangi w oryginale, rekordy, które spełniają aye IN ("10") kryteria będą prawdopodobnie często pojawiać się dwukrotnie (ale z różnymi wartościami rang).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zrobić LEFT JOIN przy więcej niż 2 stołach?

  2. Autoinkrementacja MySQL na podstawie grupy

  3. O odświeżaniu obiektów w sesji sqlalchemy

  4. Usuwanie zduplikowanych rekordów SQL, aby umożliwić unikalny klucz

  5. Jak ustawić wybraną pozycję w rozwijanym polu?