微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Mysql – 找到重复的值然后只返回最新值然后如果它返回某个结果则忽略它

我有

Tablename
id     coid     name     test     passfail     testdate
VALUES
1       1       Chris    mod1     fail         2015-05-20
2       1       Chris    mod1     pass         2015-05-25
3       2       Patrick  mod1     fail         2015-06-10
4       3       James    mod1                  2015-12-21
5       4       Agnes    mod1     cancelled    2015-07-01
6       5       Freya    mod1     pass         2015-07-01
7       5       Freya    mod2     pass        2015-07-05

它列出了谁做了什么测试以及何时,以及是否通过了测试.
我需要能够返回未通过mod1测试的人的结果.

如果我使用

SELECT *
FROM `tablename` 
WHERE `test` = 'mod1' AND `passfail` != 'pass'

克里斯在结果中是因为他也失败了mod1,但我需要能够忽略失败,因为他现在已经过去了.

我追求的结果是……

3       2       Patrick  mod1     fail         2015-06-10
4       3       James    mod1                  2015-12-21
5       4       Agnes    mod1     cancelled    2015-07-01

该coid是联系人ID,以防万一我得到两个同名的人.

如果我能找到已经完成mod1的重复coid,那么请选择最近的一个日期,然后检查它是否是通过.我认为这应该给我我需要的结果,我不知道怎么做但是请帮忙

我在sqlfiddle上一直在尝试各种各样的事情

解决方法

试试这个…

SELECT *
FROM table_name
WHERE coid NOT IN (
    SELECT coid 
    FROM same_table_name 
    WHERE test = 'mod1' AND passfail = 'pass'
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐