我有
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
克里斯在结果中因为他也失败了mod1,但我需要能够忽略失败,因为他现在已经过去了。
我追求的结果是......
coid
coid
是联系人ID,以防万一我得到两个同名的人。
如果我找到已经完成mod1的重复{{1}},那么请选择一个最新日期,然后检查它是否为通行证。我认为应该给我我需要的结果,我不知道如何做到这一点......请帮助
我一直在sqlfiddle
上尝试各种各样的事情答案 0 :(得分:1)
试试这个:
select * from table_name t1
inner join (select max(id)as id from table_name group by coid) as t2
on t1.id=t2.id;
您可以在子查询中放置任何where条件
答案 1 :(得分:1)
我认为GROUP BY
会提供数据,但我不确定,因为我没有您的数据集
SELECT *
FROM `tablename`
WHERE `test` = 'mod1' AND `passfail` != 'pass'
GROUP BY coid
ORDER BY testdate DESC
理论上,这应该抓住最新的coid
答案 2 :(得分:1)
试试这个......
SELECT *
FROM table_name
WHERE coid NOT IN (
SELECT coid
FROM same_table_name
WHERE test = 'mod1' AND passfail = 'pass'
);