用于从两个表返回行的SQL查询

时间:2016-10-18 05:00:15

标签: sql sql-server

任何人都可以解释一下这个查询是如何工作的。提前谢谢。

image1

4 个答案:

答案 0 :(得分:2)

该查询用于返回两个表的笛卡尔积(https://en.wikipedia.org/wiki/Cartesian_product)。

在这种情况下,100 x 0总共等于0行。类似地,100 x 10将等于1K行。

查询本身也可以用:

编写
SELECT Tbl1.* FROM Tbl1 CROSS JOIN Tbl2;

OR

SELECT Tbl1.* FROM Tbl1 INNER JOIN Tbl2 ON 1 = 1;

答案 1 :(得分:2)

Select t1.* from t1,t2;

在上面的陈述中,t1,t2执行t1和t2的笛卡尔积。但是,正如我们知道t2是空的,这个笛卡尔积的结果是一个空集(或DBMS方面的空表)。

因此,它将返回0行!

希望它会有所帮助!!

答案 2 :(得分:1)

这两个表之间应该存在关系。然后,您可以应用INNER JOIN来检索数据。

或者您可以使用以下查询。

Select t1.* from t1,t2 WHERE 1 = 1;

在开发动态查询时,1 = 1特别有用。因为它可以添加一个或多个条件而无需检查已存在的条件。

答案 3 :(得分:1)

SELECT Tbl1.* FROM Tbl1 CROSS JOIN Tbl2;

SELECT Tbl1.* FROM Tbl1 INNER JOIN Tbl2 ON 1 = 1;


In above statement tables t1,t2 perform cartesian product of t1 and t2(t1*t2)
table t1 having 100 records and table t2 having 0 records 
so cartesian product of t1 and t2(t1*t2)
=100*0
=0
so it will not return any records...