mysql查询帮助

时间:2010-12-16 18:49:30

标签: mysql

我有一个包含大量整数字段的表

喜欢:

fields1 | fields2 | fields3 | fields4 ....
0       | 1       | 0       | 2       ....

有一种简单的方法可以找到此字段中是否至少有一个数字

除了漫长的

之外
where  fields1 =2 or fields2=2  or fields3 =2 or  fields4 = 2 .........

另一个问题如果有简单的方法可以选择那些行 数字2在此字段中出现2到3次。

感谢

3 个答案:

答案 0 :(得分:2)

SELECT * FROM tablename WHERE 2 IN (fields1,fields2,fields3,fields4)

虽然我建议你规范化你的数据库结构。通过使用键来链接表之间的关系,可以更好地表示这种一对多关系。您可以将id值存储在一个表中,然后使用它们的id将它们连接到另一个表中的相关整数,这样一行就可以拥有多个整数。

http://databases.about.com/od/specificproducts/a/normalization.htm

答案 1 :(得分:1)

  1. WHERE 2 IN (fields1, fileds2, .... )

  2. 此问题表明您的数据未正确规范化。

答案 2 :(得分:0)

以下查询查找至少有2个字段具有值2的所有行。丑陋,缓慢但有效。

select *
  from tab
 where 2 in(field1, field2, field3, field4)
   and if(field1 = 2,1,0) +
       if(field2 = 2,1,0) + 
       if(field3 = 2,1,0) +
       if(field4 = 2,1,0) >= 2;