Есть ли проблема с моим SQL-заявлением о 'union all'? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь найти количество результатов (количество строк) следующего оператора sql.

    select distinct table1.column1, 
                    table2.column2
      from table1, 
           table2

 union all

    select table1.column1, 
           table2.column2
      from table1, 
           table2;

Число результатов первого и второго запросов: 30 и 100 , соответственно. Я ожидал , что результатом будет 130 , но фактическим результатом будет 60 (= двойное число первых результатов?).

Кроме того, результатом следующего оператора будет 200 ;

    select table1.column1, 
           table1.column2
      from table1, 
           table2

 union all

    select distinct table1.column1, 
                    table1.column2
      from table1, 
           table2;

Я не знаю, почему это так. Спасибо.

1 Ответ

0 голосов
/ 04 апреля 2019

Вы присоединяетесь к одному и тому же результату, отличному и не отличному. Это должно возвращать только неотличимый (второй результат) (

, если столбцы одинаковые, объединение не требуется, все

, но только

 select distinct table1.column1, 
                table1.column2
  from table1, table2 

или выберите table1.column1, table1.column2 из table1, table2

в зависимости от того, нужен ли вам отдельный результат или весь результат

В любом случае, вы не должны обатин, ни 130 или 200, а только 100 результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...