2017-02-22 5 views
-1

Dans SQLite, j'ai une collection d'enregistrements et je veux seulement montrer les enregistrements avec des différences spécifiques.différence sqlite entre les lignes

Le tableau a quelque chose comme les valeurs suivantes: file | idx | values ------|-------|---------------------- 1 | 101 | 1,3,7,11,23,11 2 | 101 | 1,3,7,11,23,11 3 | 101 | 0,4,8,60,20,11 1 | 211 | 12,11,23 2 | 211 | 12,0,23 3 | 211 | 12,0,23 1 | 300 | 1 2 | 300 | 0 3 | 300 | 0

Je veux être en mesure de sélectionner deux fileIDs différents, et de les comparer. Je veux dire, je veux examiner uniquement les enregistrements avec (file = 1 AND file = 2)

Ce que je ne peux pas revenir en résultat est une collection d'enregistrements qui ne sont pas les mêmes:
file | idx | values ------|-------|---------------------- 1 | 211 | 12,11,23 2 | 211 | 12,0,23 1 | 300 | 1 2 | 300 | 0

Répondre

0

Vous ne voulez pas lignes pour lesquelles une autre rangée avec les mêmes idx et values valeurs existe:

SELECT * 
FROM MyTable 
WHERE file IN (1, 2) 
    AND NOT EXISTS (SELECT * 
        FROM MyTable AS T2 
        WHERE file IN (1, 2) 
        AND file <> MyTable.file 
        AND idx = MyTable.idx 
        AND values = MyTable.values); 
0

Je viens recieved une réponse dans un autre forum. Cela semble fonctionner:

select * from thetable a, thetable b where a.file <> b.file and a.idx = b.idx and a.values <> b.values and a.file in (1, 2) and b.file in (1, 2);

Bien sûr, je change certaines valeurs comme variables dans une déclaration préparée. Mais il a fait l'affaire