2017-04-05 58 views
-1

我的問題是,我有一個相對較大的表(~2百萬行)。MySQL自已加入特定條件

表是類似的;

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和無日期(日期= NULL),則表示用戶處於活動狀態。我正在尋找非活動用戶,所以我不想讓擁有FOP的用戶使用date = NULL。如果有POP,我們必須有一個日期。

具體來說,在我的情況下,FOP的數量應該等於POP的數量。

對於爲例:在我們這裏,我只想得到useryusert的信息。

我沒有有效地加入這張表。因爲桌子真的很大。

感謝您的想法。

回答

1

這應該這樣做

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

感謝,這對我來說真的很簡單,很好! –

+0

@KemalDiri沒問題,如果這個答案是你的問題的解決方案,請考慮接受它作爲正確答案 – Shogunivar

0

你需要一些代碼才能從x中獲取所有信息,但是在後臺,所以你的思想?