【发布时间】:2010-03-09 17:16:58
【问题描述】:
我正在使用“solr”搜索引擎来查询符合给定条件的分类的索引。结果是分类的 ID:numbers,然后我用它来查找 MySql 数据库中具有这些 ID:s 的所有匹配项。 返回的 ID:s 被放入一个数组中。
正如您在下面看到的,数组已内爆。 然后我使用“IN”查找所有匹配项。
$solr_id_arr_imploded = implode("', '", $solr_id_arr);
$query = "SELECT mt.*, $sql_tbl.* FROM classified mt LEFT JOIN $sql_tbl ON
$sql_tbl.classified_id = mt.classified_id WHERE mt.ad_id IN ('$solr_id_arr_imploded')";
$sql_tbl 是用户选择的类别,在这种情况下可以说是“汽车”。
我的问题是这样的:
我有 ID:numbers 顺序(在数组内),但 MySql 并不“关心”这个顺序。无论数组的顺序如何,MySql 都会首先显示最旧的项。
所以这里是一个相同的查询,显示有两个不同的“数组方向”:
SELECT mt.*, fordon.* FROM classified mt LEFT JOIN fordon ON fordon.classified_id = mt.classified_id WHERE mt.ad_id IN ('Bmw_520i_Svensksald_784332731', 'Bmw_M3_Svensksald_755599519', 'Bmw_M3_E46_Full-utrustad_338210082')
SELECT mt.*, fordon.* FROM classified mt LEFT JOIN fordon ON fordon.classified_id = mt.classified_id WHERE mt.ad_id IN ('Bmw_M3_E46_Full-utrustad_338210082', 'Bmw_M3_Svensksald_755599519', 'Bmw_520i_Svensksald_784332731')
正如您所见,ID:s 在上面的第二个查询中被颠倒了......但无论如何它们仍然以相同的顺序显示。为什么?
我应该使用其他方法从数组中查找所有具有 ID:s 的 MySql 匹配项吗?
想法?
谢谢
【问题讨论】:
标签: php sql mysql database arrays