【问题标题】:SQL query - address referenced 2 different waysSQL 查询 - 地址引用 2 种不同的方式
【发布时间】:2021-03-31 11:50:59
【问题描述】:

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

在这种情况下,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   |

【问题讨论】:

    标签: sql count subquery inner-join


    【解决方案1】:

    查询美国有多少用户

    您可以计算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')
    

    【讨论】:

    • 直接链接到address 表的primaryaddrid 字段怎么样?编辑:我应该补充一下,这不是我的数据库设计。
    猜你喜欢
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多