MySQL计算多列上的不同值

use*_*879 23 mysql sql select group-by distinct

我写了一个脚本,每次用户登录我们域中的计算机时都会运行.此脚本记录用户以及他们登录的计算机.任意数量的用户都可以登录任意数量的计算机.

我刚刚从一个不在身边的顾问那里继承了这个IT环境,我正在编写这个小问题,所以当我接到用户的电话时,我可以搜索该用户的名字并合理地预测他们正在使用哪台计算机.他们登录任何给定计算机的次数.

以下是"登录"表中的数据示例:

    COMPUTER        USER
    ncofp02         lee
    ncofp02         lee
    ncofp02         andy
    ncodc01         andy
    ncodc01         andy
    ncodc01         lee
Run Code Online (Sandbox Code Playgroud)

我正在敲打的是在多列中计算不同值的逻辑.我希望看到这样的结果:

    COMPUTER       USER   COUNT
    ncofp02        lee    (2)
    ncofp02        andy   (1)
    ncodc01        lee    (1)
    ncodc01        andy   (2)
Run Code Online (Sandbox Code Playgroud)

有没有办法用mysql中的单个查询来完成这个,或者我应该开始循环一些PHP?(booooo!)

Bar*_*mar 48

只需列出GROUP BY子句中的多个列.

SELECT computer, user, count(*) AS count
FROM login
GROUP BY computer, user
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!我简直不敢相信这很容易.哈哈,我想我一定是在过度思考.再次感谢! (3认同)

Sah*_*hah 6

试试这个:

SELECT l.computer, l.user, COUNT(DISTINCT l.computer, l.user) AS count
FROM login l 
GROUP BY l.computer, l.user
Run Code Online (Sandbox Code Playgroud)

  • 如果你计算你正在分组的同一件事,你不需要DISTINCT. (4认同)