› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
a591826944
V2EX  ›  MySQL

请教一个 SQL

  •  
  •   a591826944 · Mar 16, 2015 · 4645 views
    This topic created in 4212 days ago, the information mentioned may be changed or developed.
    背景:三表联查。
    其中一个表,有字段 area 值有: cn/sg/hk 等。。
    另一个表有一个字段 country 值有两种可能,
    1. country="cn" 这种比较简单,sql 中直接 area=country 来过滤
    2. country="cn,sg,hk" 其实是想对应三个 area
    

    请教第二种这种情况,sql 上有无方法可以达成
    area IN ("cn","sg","hk") 这种效果?

    或者有无更好存储方案?

    8 replies  •  2015-03-16 18:22:02 +08:00
    nori
        1
    nori  
       Mar 16, 2015
    如果我没理解错题面,写个分割函数吧。
    yueyoum
        2
    yueyoum  
       Mar 16, 2015
    如果是新項目, 那转用 postgres 吧

    country 设置为 text[] 的 array 类型即可。

    country @> array[area::text]
    F281M6Dh8DXpD1g2
        3
    F281M6Dh8DXpD1g2  
       Mar 16, 2015
    查查split函数吧
    xiaozi
        4
    xiaozi  
       Mar 16, 2015
    mysql 的 find_in_set 函数,不过不能走索引
    linzy
        5
    linzy  
       Mar 16, 2015
    建议再加一张mapping表
    huigeer
        6
    huigeer  
       Mar 16, 2015
    area这种东西就不要用一个字段了, 多用几个字段会死?
    66beta
        7
    66beta  
       Mar 16, 2015
    一般再加一张表,解耦、防冗余、便扩展

    表A:
    1 cn
    2 hk
    3 sg

    表B:
    1 aaa
    2 bbb
    3 ccc

    表C
    B.1 a.1
    B.1 a.2
    B.1 a.3
    a591826944
        8
    a591826944  
    OP
       Mar 16, 2015
    @xiaozi find_in_set 警察叔叔就是他。。感谢。索引问题数量不大,应该还可以。。

    感谢大家的方案。。再加 mapping 也考虑过。。已经联查的有点多了。。mapping 不是太方便。。而且我这个需求可以不那么重。。。find_in_set 挺合适的。。总之感谢大家
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2686 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 07:20 · PVG 15:20 · LAX 00:20 · JFK 03:20
    ♥ Do have faith in what you're doing.