1

我需要一些帮助:

我有一个名为 Country 的表,其中有一个名为 Town 的列和一个名为 Country 的列。

然后我有一个名为 Stores 的表,它有几列(这是一个非常糟糕的设置表),但重要的是名为 Address1 和 Address2 的列。

我想返回 Stores 中 Address1 和 Address2 包含国家表中的城镇的所有行。

我觉得这是一个简单的解决方案,但我看不到它。

如果您可以使用 WHERE CONTAINS 但在您的参数中搜索另一个表的列,这会有所帮助吗?

例如

SELECT * 
FROM Stores
WHERE CONTAINS (Address1, 'Select Towns from Countries')

但显然这是不可能的,有一个简单的解决方案吗?

4

2 回答 2

2

你很近

SELECT * FROM Stores s
WHERE EXISTS (
    SELECT * FROM Countries
    WHERE CONTAINS(s.Address1, Town) OR CONTAINS(s.Address2, Town)
)
于 2013-11-15T06:54:06.840 回答
1

这将是我的第一次尝试:

select * from stores s
where 
  exists 
  (
    select 1 from countries c 
    where s.Address1 + s.Address2 like '%'+c.Town+'%'
  ) 

编辑:哎呀刚刚看到你想要'CONTAINS'子句。然后采取保罗的解决方案

于 2013-11-15T06:54:14.247 回答