MySQL过滤、计数、排列
我有一张这样的桌子MySQL过滤、计数、排列,mysql,Mysql,我有一张这样的桌子 user | app name1 app1 name1 not an app name1 app1 name1 app2 name2 not an app name3 app2 name3 app3 name4 app3 name4 app3 我需要提取应用程序不同的用户 user | app name1 app1 name1 app2 name3 app2 name3 app3 筛选出“非应用程序”记录,这将为
user | app
name1 app1
name1 not an app
name1 app1
name1 app2
name2 not an app
name3 app2
name3 app3
name4 app3
name4 app3
我需要提取应用程序不同的用户
user | app
name1 app1
name1 app2
name3 app2
name3 app3
筛选出“非应用程序”记录,这将为您提供拥有多个应用程序的用户:
select user
from MyTable
where app <> 'not an app'
group by user
having count(distinct app) > 1
然后,您可以使用它检索这些用户的所有数据,如下所示:
select *
from MyTable
where user in (
select user
from MyTable
where app <> 'not an app'
group by user
having count(distinct app) > 1
)
使用自连接应基于等效用户和非等效应用(不包括“非应用”记录)工作 由于结果将以指数形式增长到每个用户在应用程序中的差异数,我们使用group by将结果限制为每次出现一次
SELECT A.user, A.App
FROM table A
INNER JOIN table B
on A.User = B.user
and A.App <> B.App
and A.App <> 'not an app'
and B.App <> 'not an app'
Group by A.user, A.App
似乎有用
抱歉,我如何实现这一点,我是否要将第一个查询复制到一个新表,并将该查询与第二个查询一起复制到该新表?您只需要第二个查询。我还没有尝试过这一点,但只要该应用是一个应用且尚未显示,我就需要显示所有出现的情况。如果应用4,应用4,用户1的App1存在您希望看到同一用户的App4列出两次,App1列出一次吗?看起来会,我还有一个疑问tho,我使用WHERE like,因为我搜索包含特定值的字符串,这样:像\%@%\这样的应用程序,或者像\%Desktop%\这样的应用程序,或者像\%RDP%\这样的发布DAPP应用程序,我如何通过内部连接实现这样的功能?像这样的?A.应用程序B.应用程序和A.应用程序\%@%\和A.应用程序\%Desktop%\和A.应用程序\%RDP%\和B.应用程序\%Desktop%\和B.应用程序\%RDP%`我刚才意识到的道歉不包含,所以类似这样的东西:和A.应用程序B.应用程序和A.应用程序%@%和A.应用程序%Desktop%和A.应用程序%RDP%和B.应用程序%@%和B.应用程序%Desktop%\和B.应用程序%RDP%