sql >> データベース >  >> RDS >> Mysql

MySQLテーブルで最も類似した行を取得し、類似性順に並べ替えます

    私のテーブルのように、現在私は約5k行しかなく、それらはゆっくりと成長しているので、実際には次の簡単なアプローチを使用することにしました(質問を書いた直後に思いついた)。

    シードは、ホンダアコード(model_id 456)、2004年、ガソリン、2.0L、155hp、自動インクID123のセダンです。

    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. bind_paramを使用してMySQLiにMySQLNOW()関数を使用してレコードを挿入するにはどうすればよいですか?

    2. タプルはデータベーステーブルに順番に挿入されませんか?

    3. WooCommerceでproduct_typeをチェックするSQLクエリ

    4. MySql。セルフジョインの使い方