我的问题是,我有一个相对较大的表(约2百万行)。
表就像;
id Action user_id Date
-----------------------------------
1 FOP userx date1
2 POP userx date2
3 FOP userx NULL
4 FOP usery date4
5 POP usery date5
6 FOP userz date6
7 POP userz date7
8 FOP userz NULL
9 FOP usert date9
10 POP usert date10
11 FOP usert date11
12 POP usert date12
在表格中,如果有FOP且没有日期(Date = NULL),则表示用户处于活动状态。我正在寻找非活跃用户,因此我不想让拥有日期= NULL的FOP的用户。如果有POP,我们必须有一个日期。
具体来说,在我的情况下,FOP的数量应该等于POP的数量。
例如:在我们的例子中,我只想获得 usery 和 usert 的信息。
我没有有效地加入这张桌子。因为桌子很大。
感谢您的想法。
答案 0 :(得分:1)
这应该这样做
SELECT *
FROM table
WHERE action = POP
AND user_id NOT IN (SELECT user_id FROM table WHEREdate = NULL)
答案 1 :(得分:0)
你需要一些代码来获取x中的所有信息,但是在后台这样你的想法吗?