gpt4 book ai didi

php - 无论 "array-order",MySql 都以相同的顺序显示结果

转载 作者:搜寻专家 更新时间:2023-10-30 23:23:56 25 4
gpt4 key购买 nike

我正在使用“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 匹配项?

想法?

谢谢

最佳答案

应该这样做:

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')
ORDER BY FIELD(mt.ad_id,'$solr_id_arr_imploded')

参见 Order By Field in Sorting Rows .

关于php - 无论 "array-order",MySql 都以相同的顺序显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2410994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com