mysql查询组由哪个列区分开来

时间:2013-06-26 20:06:17

标签: mysql

嘿所有我有以下查询:

SELECT count(e.id), count(c.id), e.Nid
  FROM tbl1 e
  LEFT JOIN tbl2 c
  ON e.Uid = c.Uid
  where e.at > '".$from."'
  AND e.at < '".$to."'
  GROUP BY e.Nid

所以我有两个表,一个用于用户进入我的网站,另一个用于他创建帐户时(我自己的网站流量监控器)。 Nid是基于浏览器的用户代理。

所以这告诉我有多少ppl出现以及有多少人按浏览器类型创建了帐户。 现在我的问题是我想添加一个子句,例如WHERE e.IP是唯一的。

有人可以指出我正确的方向,我是mysql的新手。

3 个答案:

答案 0 :(得分:1)

看起来应该是这样的

SELECT COUNT(DISTINCT e.IP), count(e.id), count(c.id), e.Nid
FROM tbl1 e
LEFT JOIN tbl2 c
ON e.Uid = c.Uid
where e.at > '".$from."'
AND e.at < '".$to."'
GROUP BY e.Nid

答案 1 :(得分:0)

SELECT DISTINCT(e.IP), count(e.id), count(c.id), e.Nid
FROM tbl1 e
LEFT JOIN tbl2 c
ON e.Uid = c.Uid
where e.at > '".$from."'
AND e.at < '".$to."'
GROUP BY e.Nid 

您需要使用Distinct关键字。正如它所说,它只为该字段选择不同或唯一的记录。

答案 2 :(得分:0)

换句话说,您想要计算tbl1中的唯一IP地址。在这种情况下,您将无法tbl1tbl2 Uid加入,因为我认为Uid中的每个IP地址都可以有多个tbl1 }。