MySQL SELECT查询 - 一个单元格到多个行

时间:2011-03-26 10:57:34

标签: mysql select

在MySQL中,我有一个特定的单元格,其数据类似于此

5,6,7,8,9

如果我需要一个接一个地搜索特定的2个数字,我会使用 LIKE语句查询这2个特定数字。对于前者我需要检查是否有一行数字 6& 7 * 连续 *我做

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
...

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

numbery总是加1还是可以有任何值?

答案 2 :(得分:0)

我建议使用以下表结构

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