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 ?

Comment trouver la correspondance numérique la plus proche dans une table de base de données à l'aide de SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 05:46:43139parcourir

How to Find the Closest Numerical Match in a Database Table Using 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn