您好所有和新年快樂的MySQL如何通過多個屬性行的相似性進行排名的對象
狀況:
我在MySQL數據庫的一些表:
成績: (唯一ID,唯一的(的objectID,metricID))
| ID | ObjectID | MetricID | Score |
|--------+----------+----------+----------|
|0 | 1 | 7 | 0 |
|1 | 5 | 3 | 13 |
|2 | 7 | 2 | 78 |
|3 | 7 | 3 | 22 |
|.....
|--------+----------+----------+----------|
對象: (唯一ID,惟一ObjectName)
| ID | ObjectName |
|--------+------------|
|0 | Ook |
|1 | Oop |
|2 | Oww |
|3 | Oat |
|.....
|--------+------------|
度量: (唯一ID,唯一MetricName)
| ID | MetricName |
|--------+------------|
|0 | Moo |
|1 | Mar |
|2 | Mee |
|3 | Meep |
|.....
|--------+------------|
對於給定的對象ID:
- 將有一個數字 '0' 之間的分數的和'每個度量單位'
需要量:
對於給定的對象ID,我想返回基於以下標準排序列表:
- 返回以相似度順序排列所提供的對象行
- 返回行不包括提供的對象
- (這是我認爲的難點)相似性的順序由對象根據所提供對象的「得分距離」確定,基於其得分與所提供對象的得分之間的數值偏移/差異其中有提供和兩個條目當前檢查的對象
- 包含的objectID,對象名稱,分差(或類似的東西)
問題陳述:
我不知道用這個正確的SQL語法,到目前爲止我的實驗都失敗了。我希望儘可能在數據庫中完成這項工作,並且很少或完全沒有在代碼或類似的惡意for循環中完成此項工作。
額外的非函
- 目前有在成績表中只有200行。我的計算表明最終可能會有大約2,000,000行,但可能不會超過。
- 對象表僅會達到行
- 到5000左右的指標表僅會達到約400行
小子,你必須是一名軟件工程師。 +1以非常好的格式提問 –
可以顯示樣本數據的預期輸出嗎? – Barmar
我很難理解你對相似性順序的描述。 _score distance_與_score offset_相同嗎? _provided object_與_searched-for object_相同嗎? – Barmar