2011-03-26 36 views
1

在MySQL中我有一个数据是这样的一个特定的细胞MySQL的SELECT查询 - 一个细胞多行

5,6,7,8,9 

如果我需要接连我做一个查询与LIKE搜索特定的2号一个陈述为那2个特定数字。例如。我需要检查是否有与数字 * 一排一排 *我做

SELECT * FROM table WHERE column LIKE '%,6,7,%' OR column LIKE '%,6,7' OR column LIKE '6,7,%' 

这是有点多余和笨拙。如果我'将这些数字转换成多行,例如。每个数字将成为它自己的行'号码'''排序'列,所以我知道行的顺序。

id numbers sort 
55  8   4 
56  6   2 
57  5   1 
58  7   3 
59  9   5 
... 

什么是这种情况下相同的查询?所以我会得到与上面的查询相同的结果。我需要排序排序列的查询,并检查数字6,7是一个接一个地发生与排序。

+0

t2.stop_sequence-1。你应该把OR放在第二个选择中,我告诉你能够不关心t1和t2的顺序。 – 2011-03-26 12:02:59

+0

正确的,我已经删除了评论:D – svenkapudija 2011-03-26 12:03:52

回答

1

应该是这样的。 (如果我理解你的问题)。如果2个数字不按排序列排序,它将不会返回任何内容。

select * 
from table t1 
join table t2 on t1.sort=t2.sort+1 
where t1.numbers=6 and t2.numbers=7 

,如果你不知道哪一个应该是第一个,你可以使用它像这样:

select * 
from table t1 
join table t2 on t1.sort=t2.sort+1 or t1.sort+1=t2.sort 
where t1.numbers=6 and t2.numbers=7 
+0

数字6和7在同一个表 – dianovich 2011-03-26 11:41:10

+0

我知道..查询是正确的。 – 2011-03-26 11:43:56

+0

因此,该表被称为“SOMETABLE”,那么查询应该看起来像从SOMETABLE t1选择* 在t1.sort = t2.sort + 1 上加入SOMETABLE t2,其中t1.numbers = 6和t2.numbers = 7' ? – svenkapudija 2011-03-26 11:50:43

0

总是由一个递增numbery或者他们能有什么价值?

+0

数字可以有任何值为前。 “2,456,241”,如果我连续搜索456,241',它应该返回结果。 – svenkapudija 2011-03-26 11:31:31

+0

我也可以在这些数字来自哪些任务,为什么你需要以这种方式查询他们?也许我们可以给你更好的建议,了解背景 – Alp 2011-03-26 11:36:58

0

我提议下表结构

 
id col1 col2 rowid 
1 1 2 1 
2 2 3 1 
3 1 4 2 
+0

这是没有问题的,因为sizeof(数字)不是静态的。有时它会是3个数字(1,2,3),有时候是10个(1,2,3,4,5,6,7,8,9,10)等等。但我只需要连续搜索2个。 – svenkapudija 2011-03-26 11:30:42

+0

好的,我改变了另一个建议的答案。 – danidacar 2011-03-26 11:36:44