Ada*_*Tal 19 mysql select group-by distinct
现在我有以下查询:
SELECT name, COUNT(name), time, price, ip, SUM(price)
FROM tablename
WHERE time >= $yesterday
AND time <$today GROUP BY name
Run Code Online (Sandbox Code Playgroud)
而我想要做的是通过列'ip'添加DISTINCT,即
SELECT DISTINCT ip FROM tablename
Run Code Online (Sandbox Code Playgroud)
所以我的最终输出将是所有列,从今天时间的所有行,按名称分组(每个重复名称的名称计数),没有重复的IP地址.
我的查询应该是什么样的?(或者,如何使用php将丢失的过滤器添加到输出中)?
提前致谢.
[UPDATE]
为了最大限度地减少混淆,请考虑这个(简化的)db表:
| name | ip |
---------------------
| mark | 123 |
| mark | 123 |
| mark | 456 |
| dave | 789 |
| dave | 087 |
Run Code Online (Sandbox Code Playgroud)
我正在寻找的结果将是一个HTML表格,如下所示:
| name | name count |
----------------------------
| mark | 2 |
| dave | 2 |
Run Code Online (Sandbox Code Playgroud)
我目前得到的是:
| name | name count |
----------------------------
| mark | 3 |
| dave | 2 |
Run Code Online (Sandbox Code Playgroud)
(它标记3次,即使两次使用相同的ip).
kni*_*ttl 54
你可以使用COUNT(DISTINCT ip),这只会计算不同的值
Mar*_*ers 13
替换FROM tablename为FROM (SELECT DISTINCT * FROM tablename)应该给你想要的结果(忽略重复的行),例如:
SELECT name, COUNT(*)
FROM (SELECT DISTINCT * FROM Table1) AS T1
GROUP BY name
Run Code Online (Sandbox Code Playgroud)
测试数据的结果:
dave 2
mark 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99513 次 |
| 最近记录: |