2017-02-22 51 views
-1

В SQLite У меня есть коллекция записей, и я хочу показывать только записи с определенными отличиями.sqlite разница между строками

В таблице есть что-то вроде следующих значений: 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

Я хочу, чтобы иметь возможность выбрать один из двух различных fileIDs, и сравнить их. Я имею в виду, я хочу исследовать только записи с (file = 1 AND file = 2)

То, что я не могу получить назад в результате представляет собой набор записей, которые не то же самое:
file | idx | values ------|-------|---------------------- 1 | 211 | 12,11,23 2 | 211 | 12,0,23 1 | 300 | 1 2 | 300 | 0

ответ

0

Таким образом, вы не хотите строки, для которых еще один ряд с теми же idx и values значений существует:

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

Я только получил ответ на другом форуме. Это похоже на работу:

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

Конечно, я изменить некоторые значения в качестве переменных в подготовленном заявлении. Но он сделал трюк