Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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
Php 如何在mySQL中通过比较唯一id提取多条记录_Php_Mysql_Sql_Excel_Phpmyadmin - Fatal编程技术网

Php 如何在mySQL中通过比较唯一id提取多条记录

Php 如何在mySQL中通过比较唯一id提取多条记录,php,mysql,sql,excel,phpmyadmin,Php,Mysql,Sql,Excel,Phpmyadmin,如何通过比较mySQL中的唯一id来提取多条记录 我有一个excel文件 每个记录上都有36k个唯一id的记录 唯一Id是从11493(最小)到258090(最大)的随机数-原因是,它是在一个阶段从700k记录的主表中提取的 MySQL中的主表-Phpmyadmin超过700k条记录 我需要比较Unique Id和700k表Unique Id,只获取所有36k记录 在excel文件和表格中有一个共同点[唯一ID] 如何实现这一点?最简单的方法是创建一个简单的查询,如下所示: select * f

如何通过比较mySQL中的唯一id来提取多条记录

我有一个excel文件

每个记录上都有36k个唯一id的记录

唯一Id是从11493(最小)到258090(最大)的随机数-原因是,它是在一个阶段从700k记录的主表中提取的

MySQL中的主表-Phpmyadmin超过700k条记录

我需要比较Unique Id和700k表Unique Id,只获取所有36k记录

在excel文件和表格中有一个共同点[唯一ID]


如何实现这一点?

最简单的方法是创建一个简单的查询,如下所示:

select * from TABLENAME where unique_id in (COMMA SEPARATED UNIQUE IDS);
假设您知道如何在excel文件中使它们以逗号分隔


仅此而已

您可以将数据加载到临时表中,并将其与实际表连接,以获得所需的记录。这就是你必须要做的

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;

他试图获得36k张唱片。IN子句将无效。@ArvindSridharan解释这两个查询:如果unique\u id没有索引,我的查询将检查700k条记录;如果您仅在unique\u id中创建索引,则检查36k条记录;现在查看您的查询将检查700k*36k条记录。决定哪一个是有效的?IN子句不使用索引。临时表上的高效索引可以加快查询流形。请看@ArvindSridharan我的坏,真的…当你发表评论时,我也这么想,但通过mysql文档挖掘,因此很有帮助。
SELECT at.* 
FROM   actual_table at 
       INNER JOIN record_ids ri 
               ON at.id = ri.id = at.id;