Php 如何在MySQL中找到具有数字字段的类似行?

Php 如何在MySQL中找到具有数字字段的类似行?,php,mysql,Php,Mysql,我有一个储存歌曲信息的数据库 资料如下: 歌曲的响度介于-100和100之间, 歌曲的能量介于0和1之间, 歌曲的节奏在0到500之间, 介于0和1之间的歌曲的可舞蹈性 我需要找到两首相似的歌曲 例如: 一首歌有这样的信息 响度:-9.121000000000000 能源:0.439501478057000 节奏:133.92900000000000 舞蹈性:0.68652344822000 我怎样才能找到与这首歌相似的歌曲。MySQL有一个很好的中间操作符: 所以你可以这样做: SELECT

我有一个储存歌曲信息的数据库

资料如下:

歌曲的响度介于-100和100之间, 歌曲的能量介于0和1之间, 歌曲的节奏在0到500之间, 介于0和1之间的歌曲的可舞蹈性

我需要找到两首相似的歌曲

例如:

一首歌有这样的信息

响度:-9.121000000000000 能源:0.439501478057000 节奏:133.92900000000000 舞蹈性:0.68652344822000


我怎样才能找到与这首歌相似的歌曲。

MySQL有一个很好的中间操作符:

所以你可以这样做:

SELECT * FROM songs WHERE loudness BETWEEN -9.121-1 AND -9.121+1;

只需添加所需的所有条件,并按对您重要的列进行排序。

MySQL有一个很好的中间运算符:

所以你可以这样做:

SELECT * FROM songs WHERE loudness BETWEEN -9.121-1 AND -9.121+1;

只需添加您想要的所有条件,并按您认为重要的列进行排序。

关于这个广泛的问题,有许多可能性

您可以选择所有具有相同响度或相同能量、节奏或舞蹈性的歌曲

或者是两者的结合

您可以选择在value+或-x%范围内具有相似值的所有歌曲


您可以将整个表输出到屏幕,并使用tablesorter插件对各个列的输出进行排序。

关于这个广泛的问题,有许多可能性

您可以选择所有具有相同响度或相同能量、节奏或舞蹈性的歌曲

或者是两者的结合

您可以选择在value+或-x%范围内具有相似值的所有歌曲


您可以将整个表输出到屏幕,并使用tablesorter插件对各个列的输出进行排序。

我想您希望值/值更接近您已经拥有的值。。。搜索时,我发现了这个问题:

我想你可能会觉得有趣。因此,根据那里写的内容,我们可以做如下事情:

$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);

我认为您在歌曲表中有一个id,我认为您希望值/值更接近您已经拥有的值。。。搜索时,我发现了这个问题:

我想你可能会觉得有趣。因此,根据那里写的内容,我们可以做如下事情:

$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

您的数值是如何存储的?列类型是什么?你如何分类相似的?可能的相似定义的重复-你认为它们相似的范围是什么?首先你必须决定什么相似的方法。如果两首歌都非常响亮,它们相似吗?我也想到了一个权重,一个相关的问题是。你的数值是如何存储的?列类型是什么?你如何分类相似的?可能的相似定义的重复-你认为它们相似的范围是什么?首先你必须决定什么相似的方法。如果两首歌都非常响亮,它们相似吗?我也想到了一个重量,一个相关的问题是。