MySQL 具有特定条件的自连接

MySQL Self Join with a specific condition

我的问题是,我有一个相对较大的 table(约 200 万行)。

Table 就像;

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

在table中,如果有FOP但没有日期(Date=NULL),表示用户活跃。我正在寻找不活跃的用户,所以我不希望有一个拥有日期 = NULL 的 FOP 的用户。如果有 POP,我们必须有约会。

具体来说,在我的例子中,FOP 的数量应该等于 POP 的数量。

例如:在我们的例子中,我只想获取 useryusert 的信息。

我没有有效地加入这个table。因为table真的很大。

感谢您的想法。

您需要一些代码来从 x 获取所有信息,但在后台所以您的想法?

应该这样做

SELECT *
FROM table
WHERE action = POP
AND user_id NOT IN (SELECT user_id FROM table WHEREdate = NULL)