首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nikoo
V2EX  ›  问与答

SQL 请教:两张同样的表, ID 唯一,如何 select?

  •  
  •   nikoo · 70 天前 · 1053 次点击
    这是一个创建于 70 天前的主题,其中的信息可能已经有所发展或是发生改变。
    两张表结构相同,id 全局唯一,随机分散在两个表中,目前只知道 id,能否一句 select 获得结果?

    tableA:
    id,value
    1,...
    3,...
    4,...

    tableB:
    id,value
    2,...
    5,...
    6,...

    目前仅给出 id:5,如何实现 select 语句?
    第 1 条附言  ·  69 天前
    并不知道随机分布规则,所以无法用例如 5%2=1 之类提前获知 id 处于哪张表
    10 条回复    2020-05-26 12:34:02 +08:00
    Chihaya0824
        1
    Chihaya0824   70 天前
    a342191555
        2
    a342191555   70 天前 via iPhone   ❤️ 1
    select * from a where a.id =5 union select *from b where b.id = 5
    chinvo
        3
    chinvo   70 天前 via iPhone
    根据 id 特征分表可以减少查询时的损耗
    wushigejiajia01
        4
    wushigejiajia01   70 天前 via Android
    不知道分片规则是没法准确有效查的吧?

    用 union 肯定不是最优解
    wushigejiajia01
        5
    wushigejiajia01   70 天前 via Android
    1. 5%2=1

    2. select tableB
    YUyu101
        6
    YUyu101   70 天前 via Android
    随机分散可还行,那只能 union 吧,这样分表也不能减少压力啊,除非你查出来后保存 id 是那张表,以后不要再查两遍了。
    shakoon
        7
    shakoon   69 天前
    已经确认全局唯一了那用 union all 。union 会做去重,效率远低于 union all
    nikoo
        8
    nikoo   69 天前
    并不知道随机分布规则,所以无法用例如 5%2=1 之类提前获知 id 处于哪张表

    @a342191555 谢谢,这样写需要将匹配的 id 值写两遍,感觉似乎不太优雅?


    如果不能提算出 id 处于哪张表,是否用 union /union all 是唯一的方案了?
    daozhihun
        9
    daozhihun   69 天前
    话说,为什么会有随机分配在两张表这种设计。。
    msg7086
        10
    msg7086   69 天前   ❤️ 1
    不能预测处于哪张表,那必定要同时查两张表拿数据,那不就是 union 么。
    查两张表,你觉得值写两遍不雅,可以先放在变量里啊。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2182 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:19 · PVG 08:19 · LAX 17:19 · JFK 20:19
    ♥ Do have faith in what you're doing.