mysql-如何比较SQL中多行的值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql-如何比较SQL中多行的值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1386字,纯文字阅读大概需要2分钟。
内容图文
![mysql-如何比较SQL中多行的值](/upload/InfoBanner/zyjiaocheng/882/4198b629681a4f8094458bc7d2aa0caa.jpg)
我有一个Source表,如下所示.
Name Subject Marks Year
A Science 88 2015
A Social 75 2015
A Social 75 2015
A Maths 22 2015
B Social 75 2015
B Maths 50 2014
C Science 88 2015
C Social 75 2014
D Science 88 2015
D Social 75 2015
A Social 75 2015
B Maths 50 2014
并且我有以下要求,例如,如果有任何一个学生同时满足以下要求,则应在另一张表B中将他授予尊敬的要求集名称
Set1
Social 75 2015
Science 88 2015
Set2
Social 75 2015
Maths 50 2014
表B中的预期输出如下
Name Status
A Set1
B Set2
C None
D Set1
解决方法:
尝试这个 :
SELECT NAME,
CASE WHEN SUM(SCIENCE) + SUM(SOCIAL) = 2 THEN 'GOOD' ELSE 'BAD' END AS Status
FROM (SELECT NAME,
CASE
WHEN SUBJECT = 'Science' AND MARKS = 88 AND YEAR = 2015
THEN 1 ELSE 0
END
AS SCIENCE,
CASE
WHEN SUBJECT = 'Social' AND MARKS = 75 AND YEAR = 2015
THEN 1 ELSE 0
END
AS SOCIAL
FROM A) group by Name;
[编辑]如果您要添加一些规则,请在子查询中添加一个案例,然后更新前一个案例:
SELECT NAME,
CASE WHEN MAX(SCIENCE) + MAX(SOCIAL) = 2 THEN 'Set1'
WHEN MAX(SOCIAL) + MAX(MATHS) =2 THEN 'Set2'
ELSE 'None'END AS Status
FROM (SELECT NAME,
CASE
WHEN SUBJECT = 'Science' AND MARKS = 88 AND YEAR = 2015
THEN 1 ELSE 0
END
AS SCIENCE,
CASE
WHEN SUBJECT = 'Social' AND MARKS = 75 AND YEAR = 2015
THEN 1 ELSE 0
END
AS SOCIAL,
CASE
WHEN SUBJECT = 'Maths' AND MARKS = 50 AND YEAR = 2014
THEN 1 ELSE 0
END AS MATHS
FROM A)x group by Name;
内容总结
以上是互联网集市为您收集整理的mysql-如何比较SQL中多行的值全部内容,希望文章能够帮你解决mysql-如何比较SQL中多行的值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。