Maison >base de données >tutoriel mysql >Comment trouver la correspondance numérique la plus proche dans une table de base de données à l'aide de SQL ?
Recherche de la valeur numérique la plus proche dans une table de base de données
La tâche à accomplir est de récupérer l'enregistrement qui correspond le plus à une valeur numérique spécifiée à partir d'une base de données. Le SQL Server récupère les enregistrements en fonction des correspondances exactes de plusieurs critères, mais il n'a pas la capacité d'identifier la correspondance la plus proche lorsqu'une correspondance exacte est absente.
Pour relever ce défi, nous pouvons utiliser l'approche suivante :
Calcul de la distance
On commence par calculer la différence absolue entre la cible valeur et le champ « Zone » dans chaque enregistrement de la base de données. La valeur absolue garantit que la distance est toujours positive, permettant une comparaison facile.
Ordre des résultats
Ensuite, nous classons les enregistrements par ordre croissant en fonction de la valeur calculée distance. Cet arrangement place les enregistrements avec la plus petite distance, ou les correspondances les plus proches, au début de l'ensemble de résultats.
Récupération du Top Match
Enfin, nous utilisons le TOP 1 clause pour récupérer l'enregistrement qui a la plus petite distance, représentant la correspondance la plus proche de la valeur cible.
SQL mis à jour Requête
Voici la requête SQL mise à jour qui intègre l'approche ci-dessus :
SELECT TOP 1 * FROM [myTable] WHERE Name = 'Test' AND Size = 2 AND PType = 'p' ORDER BY ABS(Area - @input)
Cette requête renvoie l'enregistrement avec la valeur "Zone" la plus proche de la valeur d'entrée spécifiée @input .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!