【发布时间】:2012-10-12 00:12:40
【问题描述】:
我有一个mysql表结构:
uid company value
说明:
uid -> 统一的 id
公司 -> 公司的四字母代码,即。 AAAA, BIEW
value -> 是两种不同类型数据的代码:国家或地区,其中:
国家:"/[0-9]+\-/",即。 49-,末尾的字符- 表示这是一个区域值
地区:"/[0-9]+\_[0-9]+/",即。 49_002,49_4,字符 _ 表示这是一个国家/地区值
现在我想选择所有记录:
- 有多个公司定义,即。
AAAA' OR 'BIEW' - 有多个国家定义,即。
'49-' OR '5698-' - 上述国家中的第一个具有指定区域。我只想搜索
49_01而不是49_03和49_965,它们也“属于”49-国家 - 第二个国家
'5698-'没有指定区域,应该只返回value='5698-'的记录
AAAA 公司具有指定国家/地区记录的“过滤器”,但 BIEW 没有任何指定的国家/地区值。 MYSQL 查询无法正常工作:
SELECT * FROM `table` WHERE (company='AAAA' OR company='BIEW') AND (value='5698-' OR value='49_01')
【问题讨论】:
-
在一列中存储两种数据类型没有错。但是,如果您有另一个表来存储地区和国家/地区,一切都会变得更加优雅(并且更容易)
-
我只能在这个表上工作,我只能访问这个表,所以如果有另一个表会使数据库更优雅,这不是问题的一部分。
标签: mysql