【问题标题】:MySql. One column, two different data types, multiple where querymysql。一列,两种不同的数据类型,多种where查询
【发布时间】:2012-10-12 00:12:40
【问题描述】:

我有一个mysql表结构:

uid     company     value

说明:
uid -> 统一的 id
公司 -> 公司的四字母代码,即。 AAAA, BIEW
value -> 是两种不同类型数据的代码:国家或地区,其中:
国家:"/[0-9]+\-/",即。 49-,末尾的字符- 表示这是一个区域值
地区:"/[0-9]+\_[0-9]+/",即。 49_00249_4,字符 _ 表示这是一个国家/地区值

现在我想选择所有记录:

  • 有多个公司定义,即。 AAAA' OR 'BIEW'
  • 有多个国家定义,即。 '49-' OR '5698-'
  • 上述国家中的第一个具有指定区域。我只想搜索49_01 而不是49_0349_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


【解决方案1】:

如果我明白了

SELECT * 
FROM `table` 
WHERE tourOP = 'AAAA' AND (val = '5698-' OR val = '49_01') OR tourOP = 'BIEW'

【讨论】:

    猜你喜欢
    • 2015-06-22
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2010-09-18
    相关资源
    最近更新 更多