Mysql 将表中的数据插入临时表,然后从临时表的特定行中进行选择
我试图从一个现有的表(按列:Mysql 将表中的数据插入临时表,然后从临时表的特定行中进行选择,mysql,sql,temp-tables,Mysql,Sql,Temp Tables,我试图从一个现有的表(按列:p\u id,e\u id,ts,data1,data2,data3)中获取行到一个临时表(按p\u id,e\u id,ts)索引),然后从该临时表中选择特定行作为结果。然后终止临时表(因为创建临时表就是这样做的,对吗?) 我审查了这两个员额: 并且对正确编写查询感到困惑(我的查询没有运行) 看起来您只需要删除第一组(),并在语句之间添加分号 看起来您只需要删除第一组(),并在语句之间添加分号 如果以后不打算使用临时表,为什么需要临时表 下一个就不行了 SE
p\u id
,e\u id
,ts
,data1
,data2
,data3
)中获取行到一个临时表(按p\u id
,e\u id
,ts
)索引),然后从该临时表中选择特定行作为结果。然后终止临时表(因为创建临时表就是这样做的,对吗?)
我审查了这两个员额:
看起来您只需要删除第一组(),并在语句之间添加分号 如果以后不打算使用临时表,为什么需要临时表 下一个就不行了
SELECT p_id, e_id, ts, data1, data2, data3 FROM processes_history WHERE e_id=4362 AND p_id IN (11,22,33,44,55,66,77,88,99) AND ts BETWEEN '2017-03-01' AND '2017-04-01';
如果我遗漏了什么,请纠正我。如果你以后不打算使用它,为什么需要临时表 下一个就不行了
SELECT p_id, e_id, ts, data1, data2, data3 FROM processes_history WHERE e_id=4362 AND p_id IN (11,22,33,44,55,66,77,88,99) AND ts BETWEEN '2017-03-01' AND '2017-04-01';
如果我遗漏了什么,请纠正我。您可以使用下面的查询,它将在表中给出愿望:
CREATE TEMPORARY TABLE IF NOT EXISTS pet_temp (INDEX(p_id, e_id, ts))
SELECT p_id, e_id, ts, data1, data2, data3
FROM (
SELECT p_id, e_id, ts, data1, data2, data3
FROM processes_history
WHERE e_id=4362 AND ts BETWEEN '2017-03-01' AND '2017-04-01'
) x
WHERE p_id IN (11,22,33,44,55,66,77,88,99);
SELECT * FROM pet_temp;
不需要删除pet_temp表,它将在会话关闭时自动删除。您可以使用以下查询,它将在表中给出愿望:
CREATE TEMPORARY TABLE IF NOT EXISTS pet_temp (INDEX(p_id, e_id, ts))
SELECT p_id, e_id, ts, data1, data2, data3
FROM (
SELECT p_id, e_id, ts, data1, data2, data3
FROM processes_history
WHERE e_id=4362 AND ts BETWEEN '2017-03-01' AND '2017-04-01'
) x
WHERE p_id IN (11,22,33,44,55,66,77,88,99);
SELECT * FROM pet_temp;
不需要删除临时表,它将在会话关闭时自动删除。这是有效的!有没有办法命名“pet_temp”中的列?将数据提取为关联数组将导致空值<代码>while($row=db_fetch\u assoc($query)){$new[$row['p_id']]=$row['e_id'];这很有效!有没有办法命名“pet_temp”中的列?将数据作为关联数组获取结果为空。
而($row=db_fetch\u assoc($query)){$new[$row['p_id']]=$row['e_id']=$row['e_id'];
CREATE TEMPORARY TABLE IF NOT EXISTS pet_temp (INDEX(p_id, e_id, ts))
SELECT p_id, e_id, ts, data1, data2, data3
FROM (
SELECT p_id, e_id, ts, data1, data2, data3
FROM processes_history
WHERE e_id=4362 AND ts BETWEEN '2017-03-01' AND '2017-04-01'
) x
WHERE p_id IN (11,22,33,44,55,66,77,88,99);
SELECT * FROM pet_temp;