Mysql
 sql >> база данни >  >> RDS >> Mysql

Получаване на повечето сходни редове в MySQL таблицата и подреждане по прилика

Тъй като в моята таблица в момента имам само около 5k реда и те бавно нарастват, реших всъщност да използвам следния прост подход (той ми дойде точно след като написах въпроса).

Да речем, че семето е Honda Accord (model_id 456), 2004 г., бензин, 2.0L, 155 к.с., седан с auto-inc ID 123.

SELECT vehicles.*,  
    (IF(`fuel_type`='gasoline', 3, 0) + 
     IF(`body_style`='sedan', 1, 0) + 
     IF(`year` > 2001 AND `year` < 2007, 2, 0) + 
     IF(`engine_size` >= 1.8 AND `engine_size` <= 2.2, 1, 0) + 
     IF(`engine_power`=155, 3, IF(`engine_power`>124 AND `engine_power`<186, 1, 0))) AS `rank`
FROM vehicles
WHERE vehicle_id!=123 AND model_id=456
ORDER BY `rank` DESC
LIMIT 3

Ще работи, стига да нямам твърде много редове. Ако таблицата стане 50-100k, вероятно ще трябва да премина към нещо като Lucene ?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли причина да се притеснявате за реда на колоните в таблица?

  2. Синтаксис на заместители на Python MySQLdb

  3. MySQL Изберете данни от последния месец по current_timestamp

  4. MYSQL - Извличане на времеви печати между датите

  5. Добавяне на резултати от заявка към същия ред с резултати в PostgreSQL - Redshift