2013-01-06 44 views
0
订单

返回新的数组我有一个数字的JavaScript数组,其关联到的ID在一个MySQL表
例如:MYSQL PHP比较ID的数组表和

[5,7,11,100,201,55,67] // ids 

我想比较这数组MYSQL表,按日期排序(或其他任意列),并按Date返回相同的ID。 例如:

TABLE: someTable 
- id column 
- Date column 
- ect column 

我如何才能尽可能高效只返回ID作为可能吗?
如果我试图按顺序返回大量ID,比如说超过20k,这个函数是否会滞后?

+0

出于兴趣,你如何将这些ID放入JS中?在首先渲染页面之前,您能否对数据进行排序?通过AJAX传递超过2万个ID和效率的想法不一起 –

+0

@jon - 我从关联的标签/类别表中获取标识 - 例如,如果我从“MYSQL”查询返回20k'ID'结果,然后我想按日期对这些ID进行排序,我必须将它与包含日期的ID表进行比较..我在执行Sort之前将标记查询的结果保存在JavaScript数组中。也许这是我错了,也许我应该比较日期,同时我以某种方式获取标签。 –

回答

2
SELECT id FROM someTable WHERE id IN (yourIdList) ORDER BY date; 

请注意,如果日期是创建日期并且ID是自动增量,则可能“作弊”。你可以按ID排序,这应该与按日期排序相同。

+0

即使它们是自动递增的值,并且日期是时间戳,这些也不保证具有相同的顺序。这是一个无法做出的危险假设。很容易改变下一个用作id的数字。 – Boundless

+0

@jim我不敢相信我没有想到这一点,按ID的升序/降序排序,在这种情况下,我甚至不必再次访问数据库,我可以对数组进行排序。谢谢! –

2
SELECT someTable.id FROM someTable WHERE someTable.id in (5,7,11,100,201,55,67) ORDER BY someTable.date 

你必须做一些性能测试,看看它是否滞后。