2014-09-29 14 views
-3

我正在使用MySQL。我得到兩個字段值A,B作爲數字。我需要創建字段值C作爲逗號分隔值從A到B.如何在sql中獲取兩個整數來創建逗號分隔值

例如, 我有三列A,B和C.值爲'1'。 B值是'5'。我需要在sql查詢中將C值取爲'1,2,3,4,5'。

其實,我想從多個表中得到「停機報告」。我已經將值存儲爲from_machine = 1和to_machine = 5(它是我的錯誤)。但是沒有機器名稱爲3.如果我算作(從1開始),它給出5;但答案應該是4.這就是我需要的原因。如果我得到這個,我可以檢查爲IN或NOT IN('1','2','3','4','5')。

請任何一個給我一個解決方案。提前致謝。

+1

你已經試過了什麼? – BenM 2014-09-29 09:12:08

+2

請先閱讀本文(http://stackoverflow.com/q/3653462/1446005),然後再繼續前進。確保你真的想這樣做。事實上,SQL並不是字符串操作的最佳工具。 – RandomSeed 2014-09-29 09:14:56

+0

你可以通過編程來做到這一點,爲什麼不爲C列創建這種類型的值? – Gopal00005 2014-09-29 09:18:50

回答

2

回答你原來的問題可以在這個sqlfiddle

/*sample data*/ 
create table foo (a int, b int); 

insert into foo values (1, 5); 

create table numbers (n int); 

insert into numbers values 
(1), 
(2), 
(3), 
(4), 
(5), 
(6), 
(7), 
(8), 
(9), 
(10); 


/*query*/ 
select 
f.a, f.b, group_concat(n.n) 
from 
foo f 
join numbers n on n.n between f.a and f.b 
group by a, b; 

/*result*/ 
| A | B | GROUP_CONCAT(N.N) | 
|---|---|-------------------| 
| 1 | 5 |   1,2,3,4,5 | 

中查到,但是事實上,你並不需要這個。就像我在BETWEEN上例中那樣做join。不要用IN(...)(至少在這種情況下)查詢。

要獲取缺少的,你可以做一個left joinwhere your_column is null。看看this post,如果你不知道我的意思。

+0

謝謝。其工作.. – user3016421 2014-09-29 10:02:11

+0

不客氣。請隨時接受我的回答,因此問題已關閉。 – fancyPants 2014-09-29 10:03:40