2012-01-13 64 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

相關問題