Maison > base de données > tutoriel mysql > Comment SQL peut-il identifier efficacement les intervalles de temps qui se chevauchent entre deux tables ?

Comment SQL peut-il identifier efficacement les intervalles de temps qui se chevauchent entre deux tables ?

Mary-Kate Olsen
Libérer: 2024-12-31 04:20:09
original
259 Les gens l'ont consulté

How Can SQL Efficiently Identify Overlapping Time Intervals Between Two Tables?

Identifier efficacement les chevauchements d'intervalles de temps dans SQL

Problème :

Étant donné deux tables avec des colonnes d'heure de début et de fin, la tâche consiste à identifier les lignes du deuxième tableau qui se chevauchent à intervalles de temps avec chaque ligne du premier tableau. La condition prend également en compte les lignes de la deuxième table avec des heures de fin nulles.

Solution :

À l'aide de la syntaxe SQL Server 2005, la clause WHERE suivante résout efficacement ce problème. problème :

SELECT * 
FROM table1,table2 
WHERE table2.start <= table1.end 
AND (table2.end IS NULL OR table2.end >= table1.start)
Copier après la connexion

Explication :

  • La clause table2.start <= table1.end garantit que l'heure de début de tout intervalle de chevauchement potentiel dans table2 se situe dans l'heure de fin de l'intervalle actuel dans table1.
  • La deuxième condition, table2.end EST NULL OU table2.end >= table1.start, gère les heures de fin nulles dans la table2. Si l'heure de fin est nulle, elle est considérée comme prolongeant indéfiniment l'intervalle, chevauchant potentiellement tout intervalle ultérieur dans le tableau 1. Alternativement, si l'heure de fin est une valeur valide et qu'elle est supérieure ou égale à l'heure de début de l'intervalle actuel dans le tableau 1, un chevauchement est détecté.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal