2017-09-13 6 views
-2

comme indiqué dans la capture d'écran, pour un ID différent, je veux sélectionner toutes les lignes qui ont updateTime commun. Par exemple ici, les trois ID ont des updateTime 9:30:02 et 9:30:04 communs. Par conséquent, je veux sélectionner les 3e et 4e rangées (pour l'id 211709), les 6e et 8e rangées (pour l'id 301801), les 9e et 10e rangées (pour l'id 931801), je veux sélectionner toutes ces 6 rangées. Quel code sql dois-je écrire? Merci d'avance!!!T-SQL, sélectionnez les lignes

+0

N'importe qui, n'importe quelle solution? S'il vous plaît, aidez, merci! – Michael

Répondre

3

Comme vous devez retourner seulement les temps de mise à jour qui sont communs pour tous les ID, vous pouvez utiliser une requête comme ceci:

Si vous vous demandez ce que fait la clause HAVING - pour chaque UpdateTime vous vérifiez si le nombre d'ID avec ce UpdateTime est égal au nombre total d'ID.

+0

Merci les gars, une aide précieuse! – Michael

1

Cette requête vous donnera tous les temps de mise à jour qui se produisent plus d'une fois

Select UpdateTime 
From MyTable 
Group By UpdateTime 
Having Count (*) > 1 

utiliser comme sous requête

Select * 
From MyTable 
Where UpdateTime IN 
(
    Select UpdateTime 
    From MyTable 
    Group By UpdateTime 
    Having Count (*) > 1 
) 
+0

Question stupide ... '9: 30: 00' apparaîtra-t-il ici, puisqu'il a un 'Count> 1'? OP est seulement chercher '9: 30: 02' et' 9: 30: 04' – Simon

+0

9:30:00 ne devrait pas montrer ici parce que l'id 931801 n'a pas ce updateTime – Michael

+0

Des solutions? Merci! – Michael