MySQL计算多列上的不同值

时间:2013-12-28 00:20:04

标签: mysql sql select group-by distinct

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

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

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

    COMPUTER        USER
    ncofp02         lee
    ncofp02         lee
    ncofp02         andy
    ncodc01         andy
    ncodc01         andy
    ncodc01         lee

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

    COMPUTER       USER   COUNT
    ncofp02        lee    (2)
    ncofp02        andy   (1)
    ncodc01        lee    (1)
    ncodc01        andy   (2)

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

3 个答案:

答案 0 :(得分:45)

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

SELECT computer, user, count(*) AS count
FROM login
GROUP BY computer, user

答案 1 :(得分:6)

试试这个:

SELECT l.computer, l.user, COUNT(DISTINCT l.computer, l.user) AS count
FROM login l 
GROUP BY l.computer, l.user

答案 2 :(得分:0)

容易!

SELECT 
    computer, user, COUNT(DISTINCT computer, user) AS count
FROM 
    login