簡體   English   中英

獲取查詢結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM