2014-01-31 41 views
2

如何通過比較mySQL中的唯一標識提取多條記錄。如何通過比較mySQL中的唯一標識提取多條記錄

我有一個excel文件。

哪個在每條記錄上有36k記錄,並帶有唯一標識。

唯一標識是從11493(最小)到258090(最大)的隨機數開始 - 原因是,它從700k條記錄的主表中提取一個階段。

在MySQL主表 - phpMyAdmin的在700K記錄

,我需要獨特的標識比較700K表唯一的ID,並獲取所有36K只記錄

在Excel文件和表格都一個共同點[UNIQUE ID]

我該如何做到這一點?要做到這一點

回答

0

簡單的方法是創建一個簡單的查詢,如:

select * from TABLENAME where unique_id in (COMMA SEPARATED UNIQUE IDS); 

假設你知道如何使他們在excel文件逗號分隔。

這就是所有

+0

他正試圖獲得36k記錄。 IN子句將不會有效。 –

+0

@ArvindSridharan解釋這兩個查詢然後:我的查詢將檢查700k記錄,如果unique_id沒有索引,如果您在unique_id然後36k只索引,現在看到您的查詢將檢查700k * 36k。決定哪一個是有效的? – Anubhav

+0

IN子句不使用索引。臨時表上的高效索引可以加快查詢流形。看到http://stackoverflow.com/a/6219545/728610 –

3

您可以將數據加載到一個臨時表,並加入與你的真實表得到你想要的記錄。這是你必須做的

1)創建一個臨時表。添加相關索引以加快查詢速度。

create temporary table record_ids (int id); 

2)從您的Excel文件(導出爲CSV)的數據加載到臨時表

LOAD DATA INFILE "<path to your file>" 
INTO TABLE record_ids 
COLUMNS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES; 

3)得到你想要用臨時表連接的記錄。

SELECT at.* 
FROM actual_table at 
     INNER JOIN record_ids ri 
       ON at.id = ri.id = at.id; 
相關問題