我正在尝试通过最大initID复制所有行(标题)。
这是我的桌子:
ID | title | revision | initID
1 | Mytitle 1 | 0 | 10
2 | Mytitle 1 | 1 | 10
3 | Mytitle 1 | 2 | 10
4 | Mytitle 1 | 0 | 20
5 | Mytitle 1 | 1 | 20
6 | Mytitle 2 | 0 | 30
7 | Mytitle 2 | 1 | 30
8 | Mytitle 3 | 0 | 40
9 | Mytitle 3 | 1 | 40
10 | Mytitle 3 | 0 | 50
11 | Mytitle 3 | 1 | 50
12 | Mytitle 3 | 2 | 50
13 | Mytitle 4 | 0 | 60
我的目标是检查是否有多个initID
具有相同的标题,并使用MAX(initid)获得重复的行。
对于这个例子,我想从我的请求中得到这个回报:
4 | Mytitle 1 | 0 | 20
5 | Mytitle 1 | 1 | 20
10 | Mytitle 3 | 0 | 50
11 | Mytitle 3 | 1 | 50
12 | Mytitle 3 | 2 | 50
如果标题只有一个initID,我不想让这些行退回。
答案 0 :(得分:1)
您可以将EXISTS
与相关子查询一起使用:
SELECT t.*
FROM table t
WHERE EXISTS (SELECT 1 FROM table t1 WHERE t.title = t1.title AND t1.initID <> t.initID) AND
t.initID = (SELECT MAX(t1.initID) FROM table t1 WHERE t1.title = t.title);
答案 1 :(得分:0)
使用相关子查询
select t.* from table_name t
where exists( select 1 from table_name t2 where t1.title=t2.title
having count(*)>1)
and t1.initID=( select max(initID) from table_name t2 where t1.title=t2.title)