魏长东

weichangdong

东邪

mysql的IN查询的数量限制

有个需求,给了一张excel表,一行847个uid,让我再数据表查询出对应uid的另一个数据。

开始想写个程序循环查,但是嫌麻烦。就想直接select  *  from  table where uid IN (1,2,3,4,5........);然后把id都弄成逗号分割,拼接成sql,放到一个sql文件。因为这个sql太长了,不好从win下复制粘贴到linux。就rz传上去,然后命令行下用source sql文件来执行,执行结果直接into outfile了。

但是查询出来的结果总数和uid的总数差3-40呢,然后第一想法就是:是不是sql的IN 里面的数据太多了。就把之前的sql分解了下,分解成两个,然后再次执行,发现结果的总数虽然多了点但是还是不够。然后我就继续分解sql,妈蛋,发现总数虽然增多,但是还是不够。

好吧,我就放弃了。如是写了程序搞定之。

但是在网上查询了下,都说IN没有数量限制。好吧,我也不清楚,难道是因为我是source执行的sql文件的原因???还有IN具体的最大个数,我也不知道。因为是在正式环境上,我也不好继续在折腾了。何况运营还等着要数据呢。

select timediff('2015-04-07 20:28','2015-04-08 11:28'); //返回两个时间的差值