Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengapa urutan luar oleh tidak berfungsi dengan benar?

Saya tidak mengatakan ini adalah cara terbaik untuk melakukan sesuatu, tetapi ini adalah modifikasi paling sedikit untuk upaya Anda yang ada.

(
  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

Sebenarnya, saya tidak yakin Anda dapat menggabungkan dua kueri gabungan pertama dan mendapatkan hasil yang sama. Dalam kueri asli, dengan UNION DISTINCT dan perhitungan peringkat terpisah dalam aslinya, catatan yang memenuhi aye IN ("10") kriteria mungkin akan sering muncul dua kali (tetapi dengan nilai peringkat yang berbeda).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hentikan MySQL yang menoleransi banyak NULL dalam batasan UNIK

  2. Mengakses file gambar

  3. membangun aplikasi berbasis Peran

  4. Bagaimana cara memilih baris yang dikelompokkan dengan hanya nilai NULL?

  5. Tingkatkan Query MySQL dengan IN Subquery