2017-02-22 9 views
-1

In SQLite habe ich eine Sammlung von Datensätzen und ich möchte nur die Datensätze mit bestimmten Unterschieden anzeigen.sqlite Unterschied zwischen Zeilen

Die Tabelle hat so etwas wie die folgenden Werte: 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

Ich möchte zwei verschiedene fileIDs auswählen zu können, und sie vergleichen. Ich meine, ich will mit (file = 1 AND file = 2) nur Datensätze untersuchen

Was ich kann nicht zurück, als ein Ergebnis erhalten, ist eine Sammlung von Aufzeichnungen, die nicht gleich sind:
file | idx | values ------|-------|---------------------- 1 | 211 | 12,11,23 2 | 211 | 12,0,23 1 | 300 | 1 2 | 300 | 0

Antwort

0

Sie wollen also nicht für die Reihen eine andere Reihe mit den gleichen idx und values Werte vorhanden:

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

ich bekam nur eine Antwort in einem anderen Forum. Dies scheint zu funktionieren:

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);

Natürlich habe ich bestimmte Werte als Variablen in einer vorbereiteten Erklärung ändern. Aber es hat den Trick

getan
Verwandte Themen