一尘不染

从SQL Server中的两个表中进行选择的正确方法,没有要联接的公共字段

sql

回顾过去,我曾经这样编写select语句:

SELECT 
table1.columnA, table2.columnA

FROM
table1, table2

WHERE
table1.columnA = 'Some value'

但是,我被告知,在“ FROM”子句中用逗号分隔表名不兼容ANSI92。始终应该有一个JOIN语句。

这导致了我的问题。…我想对两个表之间的数据进行比较,但是两个表中都没有用于创建联接的公共字段。如果我在FROM子句中使用逗号分隔的表名的“旧式”方法(请参见代码示例),则它可以很好地工作。如果认为这种方法是错误的或不正确的做法,我会感到不舒服。

有人知道在这种情况下该怎么办吗?

额外信息:

Table1包含“地理位置”数据类型的位置列表Table2包含“地理位置”数据的不同列表

我正在写select语句来比较位置之间的距离。据我所知,你不能在地理专栏上加入JOIN吗?


阅读 259

收藏
2021-03-17

共1个答案

一尘不染

您可以(应该)使用CROSS JOIN。以下查询将等同于您的查询:

SELECT 
   table1.columnA
 , table2.columnA
FROM table1 
CROSS JOIN table2
WHERE table1.columnA = 'Some value'

或者甚至可以将INNER JOIN与始终正确的条件一起使用:

FROM table1 
INNER JOIN table2 ON 1=1
2021-03-17