【问题标题】:MySQL Self Join with a specific condition具有特定条件的 MySQL 自加入
【发布时间】:2017-04-05 09:53:24
【问题描述】:

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

桌子就像;

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),则表示用户处于活动状态。我正在寻找非活动用户,所以我不想让用户的 FOP 具有 date=NULL。如果有 POP,我们必须有一个约会。

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

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

我没有有效地为这个表做连接​​。因为桌子真的很大。

感谢您的想法。

【问题讨论】:

    标签: mysql join optimization self-join


    【解决方案1】:

    应该这样做

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

    【讨论】:

    • @KemalDiri 没问题,如果这个答案是您问题的解决方案,请考虑接受它作为正确答案
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多