Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 避免创建临时表或永久表_Mysql_Phpmyadmin_Temp Tables - Fatal编程技术网

Mysql 避免创建临时表或永久表

Mysql 避免创建临时表或永久表,mysql,phpmyadmin,temp-tables,Mysql,Phpmyadmin,Temp Tables,我想使用表进行操作,但到目前为止,我找到的唯一解决方案是首先创建一些表,并将它们连接到一起以获得所需的结果 我试图避免在MySQL查询结束时创建表并删除它们,顺便说一句,我运行的是phpmyadmin页面 数据如下:我有一个表,其中包含用户id、columnA_unixtime、columnB_unixtime——这意味着对于每个用户,数据库中存储了两个不同事件的unix_时间 user_id eventA_join eventB_join 1 1321652

我想使用表进行操作,但到目前为止,我找到的唯一解决方案是首先创建一些表,并将它们连接到一起以获得所需的结果

我试图避免在MySQL查询结束时创建表并删除它们,顺便说一句,我运行的是phpmyadmin页面

数据如下:我有一个表,其中包含用户id、columnA_unixtime、columnB_unixtime——这意味着对于每个用户,数据库中存储了两个不同事件的unix_时间

user_id eventA_join eventB_join 1 1321652009 1321652009 2 0 1321652257 3 0 1321668650 4 1321669261 0 就我所尝试的而言,我无法在phpmyadmin中使用表变量,也无法使用模板表,因为当我尝试将它们连接在一起时,无法多次引用模板表(错误#10327无法重新打开临时表)

我是否会避免创建表,但获得我想要的?有什么想法吗


编辑:两个表都从“org_table”中获取数据,该数据现在已在代码中更正

用一个查询就可以很容易地做到这一点。你只需要团结所有人:

select date, sum(IsEventA) as EventA, sum(isEventB) as EventB
from ((select user_id, DATE(FROM_UNIXTIME('eventA_join') as date,
              1 as IsEventA, 0 as IsEventB
       from table1
       where eventA_join > 0
      ) union all
      (select user_id, DATE(FROM_UNIXTIME('eventB_join') as date,
              0 as IsEventA, 1 as IsEventB
       from table1
       where eventB_join > 0
      )
     ) t
group by date
order by 1

对这非常有效,并向我展示了如何对两个选择进行聚合。谢谢你,戈登
CREATE TABLE table1(
day VARCHAR(256),
eventA_count INT);

INSERT INTO table1 (day, eventA_count)
(SELECT DATE(FROM_UNIXTIME('eventA_join') ) AS 'day', COUNT('user_id') AS 'eventA_count'
FROM org_table
WHERE 'eventA_join' > 0
GROUP BY day);

CREATE TABLE table2(
day VARCHAR(256),
eventB_count INT);

INSERT INTO table2 (day, eventB_count)
(SELECT DATE(FROM_UNIXTIME('eventB_join') ) AS 'day', COUNT('user_id') AS 'eventB_count'
FROM org_table
WHERE 'eventB_join' > 0
GROUP BY day);


SELECT t.day, t1.eventA_count, t2.eventB_count FROM
(SELECT DISTINCT day FROM table1
UNION
SELECT DISTINCT day FROM table2) t
LEFT JOIN table1 t1 
ON t.day = t1.day
LEFT JOIN table2 t2
ON t.day = t2.day

DROP table2;
DROP table1;
select date, sum(IsEventA) as EventA, sum(isEventB) as EventB
from ((select user_id, DATE(FROM_UNIXTIME('eventA_join') as date,
              1 as IsEventA, 0 as IsEventB
       from table1
       where eventA_join > 0
      ) union all
      (select user_id, DATE(FROM_UNIXTIME('eventB_join') as date,
              0 as IsEventA, 1 as IsEventB
       from table1
       where eventB_join > 0
      )
     ) t
group by date
order by 1