SQL查询地址引用了两种不同的方式



如果地址数据存储如下所示,那么查询用户是否属于特定国家/地区的最佳方法是什么?还有很多其他条件需要,所以为了简单起见,我提供了这种格式。

在这种情况下,做union是最有效的方法吗?

表格

用户

| id |name|primaryaddrid (FK to Address id)|
|----|----|--------------------------------|
|1   |bill|1                               |

用户地址

|id|userid|addrid   |
|--|------|---------|
|1 |1     |2        |
|2 |1     |3        |

地址

|id|addrline1|country|
|--|---------|-------|
|1 |1 main st|usa    |
|2 |1 main st|italy  |
|3 |1 main st|peru   |

执行查询以检查美国中有多少用户

您可以计算useraddresses表中有多少不同的userid(至少(在美国有一个带有count(distinct)的地址和一个相关的子查询:

select count(distinct userid) as cnt
from useraddresses ua
where exists (select 1 from address a where a.id = ua.addrid and a.country = 'usa')

最新更新