如何在sql中获取两个整数来创建逗号分隔值

时间:2014-09-29 09:08:42

标签: mysql sql comma

我正在使用MySQL。我得到两个字段值A,B作为数字。我需要创建字段值C作为从A到B的逗号分隔值。

例如,  我有三列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 个答案:

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

但事实上,你不需要这个。就像我在上面的示例join中所做的那样BETWEEN。不要使用IN(...)进行查询(至少在这种情况下)。

要获取遗失的内容,您可以执行left joinwhere your_column is null。如果您不知道我的意思,请查看this post