Mysql 如何提取数据

Mysql 如何提取数据,mysql,Mysql,我们有两个表-位置和广告 位置 +---------+--------------+-----------+ |PlaceID |国家代码|名称| +---------+--------------+-----------+ |1 | AU |悉尼| |2 | CA |悉尼| |3 |美国|迈阿密| |4 | AU |堪培拉| +---------+--------------+-----------+ 广告 +------+--------+-----------+ |AdID |名称|位置|

我们有两个表-
位置
广告

位置
+---------+--------------+-----------+
|PlaceID |国家代码|名称|
+---------+--------------+-----------+
|1 | AU |悉尼|
|2 | CA |悉尼|
|3 |美国|迈阿密|
|4 | AU |堪培拉|
+---------+--------------+-----------+
广告
+------+--------+-----------+
|AdID |名称|位置|
+------+--------+-----------+
|1 |测试|堪培拉|
|2 |测试2 |悉尼|
|3 | Test3 |空|
|4 |测试4 |德里|
|5 |测试5 |迈阿密|
+------+--------+-----------+
我们需要根据这个国家提取不属于澳大利亚的Ads数据。但是,在Ads表中没有指定国家/地区。这一困境实际上是因为悉尼属于两个国家,我们不希望包括AdID=2,尽管悉尼是

结果:

+------+--------+-----------+
|AdID |名称|位置|
+------+--------+-----------+
|4 |测试4 |德里|
|5 |测试5 |迈阿密|
+------+--------+-----------+
我们可以加入这两个表,但不确定如何不包括这个“悉尼”。同样,悉尼是一个例子,但将有数百个城市的名称,属于一个以上的国家

什么是正确的查询来得出这个结果

select a.*
from places p
inner join ads a on p.Name=a.Location
where p.CountryCode<>'AU'

鉴于你问题的结构,你无法实现你想要的。这完全不合逻辑,不幸的是不可能。在您尚未定义关系的情况下,您希望如何在
广告
和国家/地区之间建立关联

您的两个表当前没有关系。您的表应该如下所示:

位置
+----+---------+--------+
|id |国家|城市|
+----+---------+--------+

|1 | AU | Sydney |在您的Ads表的位置字段中,使用store placeID而不是国家名称。您是否使用任何字段映射了这两个表?请共享这两个表的完整架构。您是否在询问如何更好地构造这些表以获得所需内容,或者,您是否已经进行了此设置并试图提取数据?如果是后者,你就完蛋了。我已经更新了问题。。。基本上,我们需要知道查询是为了得到我们想要的结果want@Marty:结构已经完成,并且已经有数据。我们知道困境是。。。因此,我们只需要根据悉尼属于澳大利亚的假设来提取数据。当您进行此查询时,悉尼将出现,因为在本例中,悉尼也属于加拿大。这不是我们想要的。请检查我编辑的答案。。根据新要求纠正打字错误。看看你,这正是我们想要的。
select *
from ads
where isnull(Location,'') not in 
(select isnull(Name,'') from places where CountryCode<>'AU')
and isnull(Location,'')<>''