我的表:
id | request | subject | date
1 | 5 | 1 | 576677
2 | 2 | 3 | 576698
3 | 5 | 1 | 576999
4 | 2 | 3 | 586999
5 | 2 | 7 | 596999
需要按两列(请求,主题)选择唯一记录。但是,如果我们有不同的请求主题对(2-3,2-7),则应从结果查询中排除此记录。
我的查询现在是:
SELECT MAX(id), id, request, subject, date
FROM `tbl`
GROUP BY request, subject
having count(request) > 1
order by MAX(id) desc
如何从此查询中排除id = 4,id = 5的记录?谢谢!
答案 0 :(得分:1)
您可以按要求分组,然后检查每个组中是否所有主题相同。你可以使用MIN()和MAX():
来做到这一点SELECT request, MIN(subject) AS subject
FROM table_1
GROUP BY request
HAVING MIN(subject) = MAX(subject)
至于您的更新,我假设您希望组中的最大ID的所有字段(在您的示例中为ID 3)。然后查询将如下所示:
SELECT *
FROM table_1 t
WHERE t.id IN (SELECT MAX(s.id)
FROM table_1 s
GROUP BY s.request
HAVING MIN(s.subject) = MAX(s.subject))
ORDER BY t.id
答案 1 :(得分:1)
你可以试试这个。
select * from MyTable T1
WHERE NOT EXISTS( SELECT * FROM MyTable T2
WHERE T1.id <> T2.id
and T1.request = T2.request
and T1.subject <> T2.subject)