mysql - 将范围合并到 MySQL 的单列中?

标签 mysql sql join

我有一个“开始”和“结束”列,我想将其用于合并另一个表中的范围。我想将范围的“描述”连接在一起。这可能吗?

下面是我的架构:

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

SQL Fiddle Demo

关于mysql - 将范围合并到 MySQL 的单列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905691/

相关文章:

sql - 按嵌套选择排序

database - Hive 的 Bucket Map Join

mysql - 使用联接进行数据库设计时的 SQL 性能考虑

php - 在 PHP 中将 DateTime 格式显示为可读字符串

从子查询计算百分比的 SQL 查询

mysql - 添加一个不是主键 SQL 的自动增量列

php - 如何通过 mysql 中的 JOIN 搜索改进我的 LIKE?

mysql - 在复杂连接中获取不同的数据

mysql - SQL 计算所有行而不是计算单个行

java - 使用java导入mysql时跳过数据中的重复行