item | user | times | data | id
--------+-----------+-----------+-----------+-------
item1 | user1 | 1 | data1 | 1
item2 | user1 | 1 | data2 | 2
item3 | user1 | 1 | data3 | 3
item1 | user2 | 2 | data1 | 4
item2 | user2 | 2 | data2 | 5
以上是我数据库中的示例数据。 我想计算第一次用户1有多少项目也在第二次进行。 在这种情况下,结果应返回2,因为有2个项目,user1在第一次进行而user2在第二次进行。 但经过多次尝试后,我无法构建SQL语句。
有人可以帮忙解决这个问题吗?
答案 0 :(得分:1)
我不明白问题标题是如何与问题本身相关的。然而,这是一种获得你想要的东西的方法:
select count(*)
from t t1
where "user" = 'user1' and times = 1 and exists (
select *
from t t2
where times = 2 and t1.data = t2.data);
编辑:我刚刚将存在转换为不存在以匹配您的问题编辑: - )