在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是否一个接一个地发生并进行排序。
答案 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