我的sql语句关于“全部联合”有什么问题吗?

时间:2019-04-04 09:00:11

标签: sql oracle

我正在尝试查找以下sql语句的结果数(行数)。

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

 union all

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

第一个和第二个查询的结果数分别为 30 100 。 我预期结果为 130 ,但 actual 结果为 60 (=第一个结果的两倍? )。

此外,以下语句的结果为 200 ;

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

 union all

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

我不知道为什么。谢谢。

1 个答案:

答案 0 :(得分:0)

您正在将相同的结果加入不重复和不重复..这应该只返回不重复(第二个结果)(

如果列相同,则不需要全部并集

但只是

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

或      选择table1.column1,                     table1.column2       从table1,table2

取决于您需要不同的结果还是所有结果

无论如何,您都不应该服从130或200,而只能使用100