2012-01-13 66 views
1

我在mysql中有临时表的问题。我建立这个临时表:MySQL临时表SELECT COUNT(*)返回不同的结果

CREATE TEMPORARY TABLE IF NOT EXISTS tmp_general_detalle_entrada_salida (

    numero_registro INT(10), 
    numero_admision INT(10), 
    id_referencia INT(10), 
    facturable CHAR(1), 
    fecha_acceso DATE, 
    cod_via INT(10), 
    anexo2 VARCHAR(40), 
    anexo3 VARCHAR(40), 
    cod_bodega CHAR(3), 
    id_centro_costo INT(10), 
    cod_medico INT(10), 
    cantidad FLOAT(15,2), 
    precio_venta_bruto FLOAT(15,2), 
    descuento FLOAT(15,2), 
    precio_venta_neto FLOAT(15,2), 
    copago FLOAT(15,2), 
    consumido CHAR(1) 

)ENGINE = INNODB; 

当我在临时表做一个简单的select count(*) from tmp_general_detalle_entrada_salida,查询返回的随机值(5,4,5,5,0,“表不存在”等) 。我正在使用mysql 5.0.51b和PHP 5.2.6。

+0

对于InnoDB,'SELECT COUNT(*)'是最好的猜测。 – 2012-01-13 20:33:54

回答

2

不断变化的数字使得数据在您的选择之间变化。该表不存在表示您的连接在两次选择之间关闭。临时表在您的连接关闭时会消失。

你可以尝试运行

set global general_log='ON'; 
set global general_log_file='/tmp/mysql.log' 

这将记录从连接每一个查询选择/tmp/mysql.log。这会让您更深入了解服务器看到的内容。

+0

临时表与普通表的不同之处在于临时表在当前会话期间仅存在 ,并在结束后自动删除。 (对于Web应用程序,这意味着在完成当前页面或脚本时,临时表通常会停止存在 )。 – 2012-01-13 23:47:30

相关问题