我有一个“开始”和“结束”列,我想将其用于合并另一个表中的范围。我想将范围的“描述”连接在一起。这可能吗?
下面是我的架构:
CREATE TABLE verses
(
`id` int auto_increment primary key,
`chapter` int(11) NOT NULL,
`verse` int(11) NOT NULL,
`description` text
);
CREATE TABLE verses_range
(
`id` int auto_increment primary key,
`chapter` int(11) NOT NULL,
`start` int(11) NOT NULL,
`end` int(11)
);
到目前为止,这就是我所拥有的,但我不知道如何合并范围的描述列。它只给出第一条记录的描述:
SELECT verses_range.*, verses.description
FROM verses_range
INNER JOIN verses
ON verses_range.start = verses.verse
AND verses_range.chapter = verses.chapter
我在 SQL Fiddle ( http://sqlfiddle.com/#!2/0578e/1 ) 中有这个并返回这个:
ID CHAPTER START END DESCRIPTION
1 2 156 162 Donec tincidunt fringilla libero et vestibulum.
2 3 53 (null) Lorem ipsum dolor sit amet, consectetur adipiscing elit.
但是,我试图获取第一条记录的描述值:
Donec tincidunt fringilla libero et vestibulum. (156) Donec auctor a velit eu tempor. (157) Etiam sed lobortis sapien. (158) Integer ut dui ultricies arcu congue pulvinar. (159) Proin feugiat dignissim rutrum. (160) Mauris eu ultrices ligula. (161) Ut varius id enim tempor porta. (162)
最佳答案
你可以这样尝试...
SELECT verses_range.*, Group_Concat(verses.description)
FROM verses_range
INNER JOIN verses on
verses_range.chapter = verses.chapter
where start<=verse and verse<=if(isnull(end),start,end)
group by id,chapter,start,end
关于mysql - 将范围合并到 MySQL 的单列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905691/