Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao trật tự bên ngoài không hoạt động chính xác?

Tôi không nói đây là cách tốt nhất để tiếp tục mọi thứ, nhưng đó là cách sửa đổi ít nhất đối với những nỗ lực hiện tại của bạn.

(
  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

Trên thực tế, tôi không tích cực bạn có thể hợp nhất hai truy vấn hợp nhất đầu tiên và nhận được cùng một kết quả. Trong truy vấn ban đầu, với UNION DISTINCT và tính toán riêng về thứ hạng trong bản gốc, các bản ghi đáp ứng aye IN ("10") tiêu chí có thể sẽ thường xuất hiện hai lần (nhưng với các giá trị xếp hạng khác nhau).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql chọn với vòng lặp while

  2. INNER JOIN cùng một bảng

  3. Sử dụng SUM trên dữ liệu FLOAT

  4. Dump Tệp MySQL 5.6.10

  5. Mệnh đề Mysql LIKE và các từ riêng biệt trong một trường