Я пытаюсь создать парные комбинации строк на основе их идентификаторов. Версия SQLite 3.5.9. Содержимое таблицы:
id|name|val
1|A|20
2|B|21
3|C|22
со схемой таблицы:
CREATE TABLE mytable (
id INTEGER NOT NULL,
name VARCHAR,
val INTEGER,
PRIMARY KEY (id)
);
Тогда есть самообъединение по идентификаторам:
sqlite> select t1.id, t2.id from mytable as t1, mytable as t2 where t2.id > t1.id;
id|id
2|2
2|3
3|3
Что явно не то, что я хочу. Теперь изменение порядка t2 и t1 дает правильный результат:
sqlite> select t1.id, t2.id from mytable as t2, mytable as t1 where t2.id > t1.id;
id|id
1|2
1|3
2|3
Теперь для другого эксперимента я попытался объединить числовой столбец, отличный от идентификатора строки. Это, с другой стороны, дает правильный результат в обоих случаях.
Я надеюсь, что кто-то может дать представление о том, что здесь происходит. Насколько я понимаю, это либо ошибка в SQLite, либо какой-то деликатный аспект SQL, которого я не знаю.
Спасибо