Удалить почти повторяющиеся строки

У меня есть база данных Sqlite3 с такой таблицей:

Таблица (com1, com2)

A || B
B || A
C || D
D || B
B || D

Если у меня есть 2 строки: A || В и В || А, я хочу удалить один из них (мне все равно, какой именно).

Итак, чтобы получить:

A || B
C || D
D || B

Я прочитал много вопросов о повторяющихся строках, но не могу найти что-то подобное. Спасибо за любую помощь.


person SomeoneMe    schedule 03.11.2012    source источник
comment
Вам будет легче помочь с вашим кодом, если вы опубликуете хотя бы собственную попытку.   -  person ghoti    schedule 03.11.2012


Ответы (1)


Я думаю, что решение вашей проблемы должно выглядеть так:

SELECT
    t1.val1,t1.val2
FROM table AS t1
JOIN table AS t2 ON (
    (t1.val1=t2.val2) AND (t1.val2=t2.val1)
) WHERE t1.val1<=t1.val2

где table — имя вашей таблицы, а val1 и val2 — имена столбцов в этой таблице.

person MichalHlavacek    schedule 03.11.2012
comment
sqlite3 говорит: Ошибка: нет такой функции: strcmp - person SomeoneMe; 03.11.2012
comment
Я заменил WHERE strcmp(t1.val1, t1.val2)‹=0 на WHERE t1.val1 ‹= t1.val2, и это работает - person SomeoneMe; 03.11.2012
comment
Извините за это, я исправил это сейчас ... Это должно работать (только что проверено на моей стороне). Типы данных сложны в sqlite :-) - person MichalHlavacek; 03.11.2012