Sélectionnez les valeurs ne sont pas dans une certaine plage dans une table

J'ai une table avec une colonne d'id et des centaines de milliers de lignes. J'ai reçu une liste de plus de 1000 Id pour vérifier les autres données de la table contre. Les Id ne sont pas stockées dans l'ordre. La liste d'Id n'est pas dans l'ordre. Lorsque je sélectionne les données de la table à l'aide de ces identifiants seulement 990 résultats sont retournés, signification depuis que la liste a été produit, de 10 les résultats ont changé/été supprimé. Comment puis-je trouver les 10 valeurs manquantes à partir de cette plage de données? C'est ce que je fais en ce moment:

select * from mytable
where theId in (100, 2223, 31, 43321...92199, 14000)

Renvoie la 990 résultats. Puis-je faire quelque chose comme:

select val from (1, 2, 3, 4...999, 1000) 
where val not in (
select * from mytable
where theId in (1, 2, 3, 4...999, 1000)
)

EDIT: Désolé pour la confusion. Je devrais avoir mentionné que les ID ne sont pas dans un ordre particulier et j'étais juste en utilisant le nombre 1000, comme un exemple. Ils sont dans un ordre aléatoire et le 1000 est juste un choix beaucoup plus grand de table (de 100 000 s de lignes).

À la suite de la modifier, en fait, je suis un peu plus confus! Si il y a 1000 Id dans votre liste et seulement 990 sont trouvé dans la base de données, alors vous avez sûrement été donné 10 'mauvais' Id et le 10 "disparus", les dossiers n'existent tout simplement pas?
Exactement. Mais je veux savoir ce que les personnes disparues Id. Parce qu'ils ont été à un certain moment et sont maintenant disparus.
Mais sûrement, ils pourraient être aucun de l'autre de 99 000-odd dossiers? Quand étaient-ils là? Si quelqu'un a supprimé 10 enregistrements, alors je dirais de vérifier vos sauvegardes et des journaux de transaction parce que vous ne pouvez pas SELECT des dossiers manquants!
Ouais je le comprends. Si j'ai 1000 id de l'origine, et maintenant à la recherche de tous les records avec ces identifiants retourne 10 de moins, cela signifie que 10 sont manquantes à partir de l'intérieur de cette fourchette. L'autre de 990 000 ou si les dossiers ne sont pas affectés parce que leurs papiers d'identité ne sont pas tout l'un des 1000 donné à moi. Je vais en bas de la route de permettre à celles-1000 Id dans une autre table à comparer. Ne peux pas penser à une solution plus simple.

OriginalL'auteur edwardmlyte | 2011-10-04

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *