2011-03-26 35 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