2011-12-15 88 views
1

我有一個存儲歌曲信息的數據庫。如何在MySQL中查找與數字字段相似的行?

的信息是:

歌曲的

響度是在-100和100之間,歌曲的
能源是0和1之間,歌曲的
速度是0和500之間,
Danceability歌曲介於0和1之間

我需要找到兩首歌曲的相似度。

例如:

的歌曲具有類似

響度信息:-9.121000000000000
能源:0.439501478057000
節奏:133.929000000000000
danceability:0.686523448220000

我怎樣才能找到歌曲類似於這首歌曲。

+0

的數值?你如何分類「相似」? – liquorvicar 2011-12-15 14:50:03

回答

0

在這個廣​​泛的問題上的多種可能性。

,你可以選擇具有相同的響度或相同enery或節奏或danceability

或者實際上每一個組合的所有歌曲。

,你可以選擇是一個範圍值內相似值全部歌曲+或 - X%

您可以輸出全表篩選並使用tablesorter插件下令對各列的輸出。

0

我想你想要的值/值更接近你已經擁有的價值觀......搜索它,我發現這樣一個問題:

Select closest numerical value with MySQL query

,我認爲你可能會感興趣。因此,立足於那裏寫着什麼,我們可以這樣做:

$query = <<<query 
(
select * 
from  songs 
where loudness >= $given_loudness 
AND 
energy >= $given_energy 
AND 
tempo >= $given_tempo 
AND 
danceability >= $given_danceability 
order by id asc 
limit 1 
) 
union 
(
select * 
from  songs 
where loudness >= $given_loudness 
AND 
energy >= $given_energy 
AND 
tempo >= $given_tempo 
AND 
danceability >= $given_danceability 
order by id desc 
limit 1 
) 
query; 

$res = mysql_query($query); 

我都認爲你在songs表(哪一列型)的ID如何存儲

相關問題