![](/img/trans.png)
[英]Use a SELECT result as WHERE condition to another SELECT in the same query, is that possible?
[英]is it possible to use result of query in same query
例如我有這個表事件:
用戶身份 | 事件類型 | date_of_event |
---|---|---|
用戶A | X | 01-01-2000 |
用戶A | 是 | 01-01-2005 |
用戶B | X | 01-01-2000 |
用戶B | 是 | 01-01-2100 |
我想 select 在next 2 years AFTER the date of event_type X
select all users
擁有event_type = X
但no event_type Y
的用戶。 所以在上面的表格中就是 userA 和 userB
我知道我可以在 2 個 mysql 查詢中做到這一點,但只是想知道是否有辦法在 1 個查詢中做到這一點
你可以通過自加入來做到這一點。
SELECT DISTINCT a.user_id
FROM yourTable AS a
LEFT JOIN yourTable AS B
ON a.user_id = b.user_id AND b.date_of_event < DATE_ADD(a.date_of_event, INTERVAL 2 YEAR)
AND b.event_type = 'Y'
WHERE a.event_type = 'X'
select t.user_id
,t.event_type
,t.date_of_event
from t join t t2 on t.user_id = t2.user_id
and t.event_type <> t2.event_type
where t.event_type = 'x'
and (t2.date_of_event < t.date_of_event
or datediff(t2.date_of_event, t.date_of_event) > 730)
用戶身份 | 事件類型 | date_of_event |
---|---|---|
用戶A | X | 2000-01-01 |
用戶B | X | 2000-01-01 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.