![]() |
разные результаты SQL выборки
есть два запроса:
select r1.id from rt_relation_record as r1, rt_relation_record as r2 where r1.id > r2.id and r1.master_rt_record_id = r2.master_rt_record_id and r1.slave_rt_record_id = r2.slave_rt_record_id возврящает порядка 530 записей select id from rt_relation_record where id in ( select r1.id from bnt_rt_relation_record as r1, bnt_rt_relation_record as r2 where r1.id > r2.id and r1.master_rt_record_id = r2.master_rt_record_id and r1.slave_rt_record_id = r2.slave_rt_record_id ) возвращает порядка 140 записей куда делись все остальные записи??? |
Vlad Drakula А какой из результатов правильный? И вообще, что за БД?
|
dmitryst
база MySQL 4.1.16 а о правильности ответа ничего сказать не могу т.к. по идее должны эти оба запросы выдавать одно и тоже.... |
Vlad Drakula Меня смущает структура "...as...as". ИМХО, второ вариант правильнее. Сейчас гуру подойдут, побьют :)
|
dmitryst
Цитата:
Цитата:
|
Vlad Drakula
А что это такое? Цитата:
Таблица же завётся: Цитата:
|
Vlad Drakula Я имел в виду не синтаксические ошибки, а логические (т.е. написано правильно, но работает не так, как надо). Я обычно для теста создаю маленькие тест-таблицы и пошагово отлаживаю выборку (с контролем того, что выдает каждая)
|
Я так думаю что
select distinct r1.id from rt_relation_record as r1, rt_relation_record as r2 where r1.id > r2.id and r1.master_rt_record_id = r2.master_rt_record_id and r1.slave_rt_record_id = r2.slave_rt_record_id вернет как раз порядка 140 записей |
А что говорит EXPLAIN?
Вообще-то таблицы действительно разные. |
Время: 13:13. |
Время: 13:13.
© OSzone.net 2001-