如何停止行返回两次 MYSQL

How to Stop Row Returning Twice MYSQL

我有这样的数据库设置:

Table:章节
section_id | section_name
  i23kj |消息
  o492q |事件

Table:小节
sub_section_id | section_id | sub_section_name
    q123l | i23kj |华盛顿 Post
    z765a | i23kj |纽约时报
    w439m | o492q |发布会

我要一个页面打印以下信息:

新闻
华盛顿 Post
纽约时报

活动
发布会

我正在使用查询:

SELECT Sections.section_id, Sections.section_name, Subsections.sub_section_id, Subsections.sub_section_name 
FROM Sections INNER JOIN Subsections 
ON Sections.section_id=Subsections.section_id

然而这个returns:

新闻
华盛顿 Post

新闻
纽约时报

活动
发布会

如何更改我的查询以仅显示该部分一次以及该部分下的子部分

你需要使用子查询,刚刚测试它看到 DEMO:

create table sections
(
  section_id varchar(10),
  section_name varchar(50)
);
create table subsections
(
  sub_section_id varchar(10),
  section_id varchar(10),
  sub_section_name varchar(50)
);
insert into sections 
       values('i23kj','News'),
             ('o492q','Events');
insert into subsections
       values('q123l','i23kj','Washington Post'),
             ('z765a','i23kj','NY Times'),
             ('w439m','o492q','Launch Party');

下面查询的结果正是您想要的问题:

select case 
       when q2.sub_section_id is null then section_name
       else sub_section_name end
from 

(select * from ( select Sections.section_id, Sections.section_name,
       null as sub_section_id, null as sub_section_name 
FROM   Sections
union
SELECT Sections.section_id, Sections.section_name,
       Subsections.sub_section_id, Subsections.sub_section_name 
FROM   Sections INNER JOIN Subsections 
       ON Sections.section_id=Subsections.section_id) as q 
       order by q.section_id,q.sub_section_id) as q2