Php 将两个不同的查询合并为一个查询

Php 将两个不同的查询合并为一个查询,php,mysql,database,select,mysqli,Php,Mysql,Database,Select,Mysqli,我有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 D

我有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 我建议把它去掉

假设您的表包含以下内容:

|                         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 |

SQLFIDLE示例:

您所说的联合收割机是什么意思?你能举例说明这两个查询的结果吗?您希望这些结果如何合并?在MySQL中,有一个UNION语句,它将合并多个查询的结果。但是,结果需要有相同的列。非常好。在我意识到它是日期的缩写之前,有一秒钟我把它和名为dt的专栏搞混了。