正确的方法从SQL Server中的两个表中选择没有要加入的公共字段

vol*_*one 28 sql sql-server sql-server-2012

回到过去,我曾经写过这样的select语句:

SELECT 
table1.columnA, table2.columnA

FROM
table1, table2

WHERE
table1.columnA = 'Some value'
Run Code Online (Sandbox Code Playgroud)

但是我被告知在"FROM"子句中使用逗号分隔的表名称与ANSI92不兼容.应始终有一个JOIN语句.

这导致了我的问题....我想对两个表之间的数据进行比较,但两个表中没有用于创建连接的公共字段.如果我在FROM子句中使用逗号分隔的表名的"遗留"方法(参见代码示例),那么它的工作完全正常.如果被认为是错误的或不好的做法,我会感到不舒服.

谁知道在这种情况下该怎么做?

额外信息:

表1包含"地理"数据类型中的位置列表表2包含不同的"地理位置"列表

我正在写select语句来比较位置之间的距离.到目前为止,我知道你不能在地理专栏上加入?

Nen*_*vic 50

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

SELECT 
   table1.columnA
 , table2.columnA
FROM table1 
CROSS JOIN table2
WHERE table1.columnA = 'Some value'
Run Code Online (Sandbox Code Playgroud)

或者你甚至可以使用INNER JOIN和一些总是真实的条件:

FROM table1 
INNER JOIN table2 ON 1=1
Run Code Online (Sandbox Code Playgroud)