我有一个包含大量整数字段的表
喜欢:
fields1 | fields2 | fields3 | fields4 ....
0 | 1 | 0 | 2 ....
有一种简单的方法可以找到此字段中是否至少有一个数字
除了漫长的
之外where fields1 =2 or fields2=2 or fields3 =2 or fields4 = 2 .........
另一个问题如果有简单的方法可以选择那些行 数字2在此字段中出现2到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)
WHERE 2 IN (fields1, fileds2, .... )
此问题表明您的数据未正确规范化。
答案 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;