Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询同一服务器上不同数据库中的表_Sql_Sql Server_Select - Fatal编程技术网

Sql 查询同一服务器上不同数据库中的表

Sql 查询同一服务器上不同数据库中的表,sql,sql-server,select,Sql,Sql Server,Select,我运行了两个我遇到的查询,它们似乎都返回了不同的结果 SELECT * FROM [Log].[dbo].[LogTable] AS MainLog, [Archive].[dbo].[LogTable] ORDER BY [Log].[dbo].[LogTable] DESC; SELECT * FROM [Log].[dbo].[LogTable] UNION ALL SELECT * FROM [Archive].[dbo].[LogTable] ORDER BY [Log].

我运行了两个我遇到的查询,它们似乎都返回了不同的结果

SELECT * 
FROM [Log].[dbo].[LogTable] AS MainLog, [Archive].[dbo].[LogTable] 
ORDER BY [Log].[dbo].[LogTable] DESC;

SELECT * 
FROM [Log].[dbo].[LogTable] 
UNION ALL
SELECT *
FROM [Archive].[dbo].[LogTable] 
ORDER BY [Log].[dbo].[LogTable] DESC;

第二个查询返回了正确的行数。它的顺序也很正确。第一个查询返回了很多行,第一个查询到底做了什么?它没有出错,并且确实合并了数据。

如果不指定如何以及在哪些列上进行连接,则执行交叉连接。第二个查询是从每个表中选择记录并将结果连接在一起。

在查询一中得到的结果称为笛卡尔积。让我们一步一步地阅读您的查询。
  • 访问两个数据库。
  • 在归档和日志数据库中连接日志表。
  • 没有Where子句或Join on条件为交叉联接让路
  • 交叉连接意味着如果日志中有a、b、c,归档数据库中有1、2、3。O/P将为a1、a2、a3、b1、b2、b3、c1、c2、c3。(当然是按行)


    在第二个查询中,您只是在一个接一个地编写两条语句的o/p。a、 b,c,1,2,3

    第一个查询本质上是交叉连接,请参见