我遇到了两个我遇到的查询,他们似乎都返回了不同的结果。
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;
第二个查询返回了正确的行数。它也正确地订购了。第一个查询带回了很多行,第一个查询究竟做了什么?它没有错误,它确实合并了数据。
答案 0 :(得分:0)
如果不指定要加入的列和列,则表示您正在执行交叉连接。第二个查询是从每个表中选择记录并将结果连接在一起。
答案 1 :(得分:0)
您在查询一中获得的内容称为笛卡尔积。让我们一步一步阅读您的查询
在第二个查询中,您只是一个接一个地编写两个语句的o / p。 A,B,C,1,2,3