这是一个错误吗?还是错误?还是错误的查询?

时间:2016-07-19 01:43:45

标签: mysql view xampp

我在mysql中遇到了查询问题。我创建了2个表,table1和表2.在table1中有2行数据,在table2中它有2行数据,每个表有3个字段。在这种情况下,我想查看视图,这是一个查询:

create view point as select table2.field2 from table1, table2;

我认为它会在table2中显示有2行数据的数据。但结果是显示4行数据,其中每2行是相同的数据。 当我尝试删除table1中的1行时,其意思是删除1个数据,我尝试输入如上所述的查询。结果是正确的,它在table2中显示2行数据。为什么它在table1中有1行数据时是正确的,并且当table1有2行数据时没有。请问如何解决?或者我的错误查询。

1 个答案:

答案 0 :(得分:0)

您在这两个表之间使用implicit cross join

假设table1m行,table2n行。

然后

SELECT * FROM table1,table2 将返回m*n行。

以上查询等同于:

SELECT * FROM table1 CROSS JOIN table2

如果您希望从table1table2获取所有行,请记住我不需要重复项,那么您需要使用UNION

所以,您可能正在寻找此查询:

 CREATE VIEW point AS 
 SELECT table2.field2 from table2 
 UNION 
 SELECT table1.field2 from table1

注意:

如果您想在最终结果集中允许重复值,请使用UNION ALL代替UNION,如下所示:

CREATE VIEW point AS 
SELECT table2.field2 from table2 
UNION ALL
SELECT table1.field2 from table1