数据库查询怎样去掉重复的数据

qinbaowei 2018-10-14 08:33:18
多表查询,比如查询语句:
select * from school s,discipline d where 1=1 and s.school_name=d.school_name and d.category_code="08" and d.rank=1 and s.local_code="11" and s.project_985=1 and s.project_211=1


得到的结果是这样的


我想要的效果是,两部分数据都要,把前面红色部分的重复数据去除,后面蓝色部分的数据正常取出,有办法实现这样的查询吗,谢谢大家。
我想要的效果:
...全文
696 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
貌似楼主 第五行是不显示的 我就问他判断逻辑是什么
mib3000 2018-10-15
  • 打赏
  • 举报
回复
拿走不谢 select if(t.school_rank = 1, t.school_name, null) school_name, if(t.school_rank = 1, t.location, null) location, t.lev_1_subj_name, t.result from ( select s.school_name, s.location, d.lev_1_subj_name, d.result, IF (@pdept = s.school_name ,@rank :=@rank + 1 ,@rank := 1 ) school_rank, @pdept := s.school_name from (select '华工' school_name, '广东' location union all select '中大' school_name, '广东' location ) s, (select '华工' school_name, '电气' lev_1_subj_name, 'A' result union all select '华工' school_name, '电子' lev_1_subj_name, 'B' result union all select '中大' school_name, '电子' lev_1_subj_name, 'C' result union all select '中大' school_name, '材料' lev_1_subj_name, 'D' result union all select '中大' school_name, '软件' lev_1_subj_name, 'E' result ) d, ( SELECT @rownum := 0, @pdept := NULL ,@rank := 0) c where s.school_name = d.school_name ) t
有梦想的小白 2018-10-15
  • 打赏
  • 举报
回复
用distinct关键字试试。
田小瘦 2018-10-15
  • 打赏
  • 举报
回复
查询出来之后用excel处理, 或者用js处理
mingqing6364 2018-10-15
  • 打赏
  • 举报
回复
select DISTINCT * from school s,discipline d where 1=1 and s.school_name=d.school_name and d.category_code="08" and d.rank=1 and s.local_code="11" and s.project_985=1 and s.project_211=1
ACMAIN_CHM 2018-10-15
  • 打赏
  • 举报
回复

mysql> select * from  school;
+--------------+----------+------------+-------------+-------------+
| school_name  | location | local_code | project_985 | project_211 |
+--------------+----------+------------+-------------+-------------+
| 中山大学     | 广东     | 11         |           1 |           1 |
| 华南理工大学 | 广东     | 11         |           1 |           1 |
+--------------+----------+------------+-------------+-------------+
2 rows in set (0.00 sec)

mysql> select * from discipline;
+--------------+---------------+------+--------------+--------+
| school_name  | category_code | rank | subject_name | result |
+--------------+---------------+------+--------------+--------+
| 中山大学     | 08            |    1 | 材料         | B      |
| 中山大学     | 08            |    1 | 电子         | B      |
| 中山大学     | 08            |    1 | 软件         | B      |
| 华南理工大学 | 08            |    1 | 电气         | B      |
| 华南理工大学 | 08            |    1 | 电子         | B      |
+--------------+---------------+------+--------------+--------+
5 rows in set (0.00 sec)

mysql> select if(d.subject_name=t.subject_name,s.school_name,'') as school_name,s.location,
    -> d.subject_name,d.result
    -> from school s,discipline d,
    -> (
    -> select school_name,subject_name
    -> from discipline
    -> where category_code='08'
    -> and `rank`=1
    -> group by school_name
    -> ) t
    -> where 1=1
    -> and s.school_name=d.school_name
    -> and d.category_code="08"
    -> and d.rank=1
    -> and s.local_code="11"
    -> and s.project_985=1
    -> and s.project_211=1
    -> and s.school_name=t.school_name
    -> order by s.school_name;
+--------------+----------+--------------+--------+
| school_name  | location | subject_name | result |
+--------------+----------+--------------+--------+
| 中山大学     | 广东     | 材料         | B      |
|              | 广东     | 电子         | B      |
|              | 广东     | 软件         | B      |
| 华南理工大学 | 广东     | 电气         | B      |
|              | 广东     | 电子         | B      |
+--------------+----------+--------------+--------+
5 rows in set (0.00 sec)

mysql>
  • 打赏
  • 举报
回复
省略那一行的逻辑?
crynono 2018-10-14
  • 打赏
  • 举报
回复
可能不行,拿excel做吧

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧