[英]Combining 2 different queries into one
我有2个查询,我想合并为1个。但是,我收到一个错误:
//first query: SELECT @rownum := @rownum +1 `index` , t. * FROM ipAll t, ( SELECT @rownum :=0 ) r //second query: SELECT DISTINCT COUNT( ip ) , SUM( views ) , DATE FROM ipAll WHERE date LIKE '%-12-%' GROUP BY DATE ORDER BY DATE ASC LIMIT 31 // combined query: (Totally wrong. How do I fix this?) SELECT @rownum := @rownum +1 `index` , DISTINCT COUNT( ip ) , SUM( views ) , DATE FROM ipAll t, ( SELECT @rownum :=0 ) r WHERE date LIKE '%-12-%' GROUP BY DATE ORDER BY DATE ASC LIMIT 31
我建议删除distinct
。
假设您的表具有以下内容:
| dt | ip | views |
|----------------------------|---------|-------|
| December, 01 2015 00:00:00 | 1.1.1.1 | 100 |
| December, 01 2015 00:00:00 | 2.2.2.2 | 10 |
| December, 02 2015 00:00:00 | 3.3.3.3 | 4 |
| December, 01 2014 00:00:00 | 1.1.1.1 | 100 |
| November, 01 2015 00:00:00 | 1.1.1.1 | 1 |
| November, 01 2015 00:00:00 | 2.2.2.2 | 2 |
查询:
SELECT
@rownum := @rownum +1 `index`,
COUNT( ip ), SUM( views ) , dt
FROM ipAll, ( SELECT @rownum :=0 ) r
WHERE dt LIKE '%-12-%'
GROUP BY dt
ORDER BY dt ASC
LIMIT 31;
将导致:
| index | COUNT( ip ) | SUM( views ) | dt |
|-------|-------------|--------------|----------------------------|
| 3 | 1 | 100 | December, 01 2014 00:00:00 |
| 1 | 2 | 110 | December, 01 2015 00:00:00 |
| 2 | 1 | 4 | December, 02 2015 00:00:00 |
获得相似(不相同)结果的另一种方法是:
select @rownum := @rownum +1 `index`, main.*
from ( SELECT @rownum :=0 ) r, (
SELECT COUNT( ip ), SUM( views ) , dt
FROM ipAll
WHERE dt LIKE '%-12-%'
GROUP BY dt
LIMIT 31
) main
ORDER BY dt ASC
其结果将是:
| index | COUNT( ip ) | SUM( views ) | dt |
|-------|-------------|--------------|----------------------------|
| 1 | 1 | 100 | December, 01 2014 00:00:00 |
| 2 | 2 | 110 | December, 01 2015 00:00:00 |
| 3 | 1 | 4 | December, 02 2015 00:00:00 |
SQLFiddle示例: http ://sqlfiddle.com/#!9/beb98/3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.