LINUX.ORG.RU

вопрос по sql


0

1

объясните пожалуйста, почему

select count(id) from table where fl1 = 1; // 3781
select count(id) from table where fl2 = 1; // 32938

в сумме дают 36719, но

select count(id) from table where fl1 = 1 or fl2 = 1 or (fl1 = 1 and fl2 = 1);

дает 36318 ?

Ответ на: комментарий от sergey-novikov
1: fl1 = 1 and NOT fl2 = 1 // 3380
2: fl2 = 1 and NOT fl1 = 1 // 32537
3: fl1 = 1 and     fl2 = 1 // 401

count(fl1 = 1) == ( $1 + $3 ) = 3380 + 401 = 3781
count(fl2 = 1) == ( $2 + $3 ) = 32537 + 401 = 32938

В последнем выражении count высчитывается как ($1 + $2 + $3). Для того, чтобы было равно сумме первых двух выборок, нужно ($1 + $2 + 2*$3)

schizoid ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.