目前,我有以下記錄:SQL語句來記錄排序取決於具體值
+----+-------------+-----------------+--------+-----------------+-------------+
| id | postal_code | program_type_id | gender | school_location | school_type |
+----+-------------+-----------------+--------+-----------------+-------------+
| 1 | 66202 | 2 | female | | |
| 2 | 67487 | 2 | male | rural | public |
| 3 | 68504 | 2 | female | rural | private |
| 4 | 67554 | 2 | female | rural | public |
| 5 | 67212 | 2 | female | urban | public |
+----+-------------+-----------------+--------+-----------------+-------------+
我也有如下記載:
mysql> select id, postal_code, program_type_id, gender, school_location, school_type from applications limit 1 offset 6;
+----+-------------+-----------------+--------+-----------------+-------------+
| id | postal_code | program_type_id | gender | school_location | school_type |
+----+-------------+-----------------+--------+-----------------+-------------+
| 7 | 66202 | 2 | female | urban | public |
+----+-------------+-----------------+--------+-----------------+-------------+
我會有這個記錄7
匹配到以某種方式記錄在數據庫中並給出分數。
評分:
匹配POSTAL_CODE = 1000
點 匹配program_type_id = 490
點 匹配性別= 20
點 匹配school_type
= 500點
現在,我要找回應該按以下順序記錄:
+----+-------------+-----------------+--------+-----------------+-------------+
| id | postal_code | program_type_id | gender | school_location | school_type |
+----+-------------+-----------------+--------+-----------------+-------------+
| 1 | 66202 | 2 | male | | | 1K points
| 3 | 68504 | 2 | female | rural | private | 520 points
| 2 | 67487 | 1 | male | rural | public | 490 points
| 4 | 67554 | 1 | female | rural | public | 20 points
| 5 | 67212 | 1 | female | urban | public | 20 points
+----+-------------+-----------------+--------+-----------------+-------------+
5 rows in set (0.00 sec)
注意3超2是導致匹配program_type_id和性別會獲得520分,匹配剛剛school_type只會獲得500分。在這種情況下,3分高於2分。
現在,我的問題是,有沒有人有任何想法如何做到這一點,以及如何做到這一點?順便說一句,這是MySQL的5
分析你的答案,這可能意味着我們將不得不對每一個組合case語句了。例如,program_type_id和gender將會有自己的case語句。 –
當然是..但不是全部的情況下,但只有當......然後......部分 –