[英]Getting a query result whiting a group by
我正在嘗試獲取查詢結果。 該表存儲有關用戶訪問網站中哪個頁面的信息。 因此,我可以連續有一個示例,每個用戶訪問頁面“ A”,並且第二行中有同一用戶訪問頁面“ B”。 我想查詢選擇訪問頁面“ A”和“ B”的一個或多個用戶。 我無法在“ where”條件中加上“ and”,因為只有一列。
有表結構
ID | user_id | page | views
1 1 A 44
2 1 B 120
3 2 A 140
4 3 A 22
我已經嘗試過了,但是沒有用
SELECT users.name,users.id,users.email
FROM users
JOIN help_messages ON users.id = help_messages.id_user
WHERE (PAGE LIKE '%clubs%' or PAGE like '%profile%') and views >= 1
GROUP BY help_messages.id_user, help_messages.page
因此,請提供任何解決方案。 謝謝
一個通用的方法是使用聚合和一個having
子句:
select user_id
from table t
group by user_id
having sum(page = 'A') > 0 and sum(page = 'B') > 0;
having
子句中的第一個條件計算的是具有'A'
的行的數量,並且僅允許具有至少一個此類行的user_id
。 第二個條件對'B'
相同。
這是一種通用方法,因為添加其他頁面很容易。 另外,如果您想要訪問“ A”而不是“ B”的人,則只需使用:
having sum(page = 'A') > 0 and sum(page = 'B') = 0;
看看這是否適合您:
SELECT sub1.* FROM
(SELECT * FROM users WHERE page = 'A') AS sub1
JOIN
((SELECT * FROM users WHERE page = 'B') AS sub2
ON (sub1.user_id = sub2.user_id)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.