我有一个带查询的数组
此数组按标准排序。
现在我想创建一个新查询
示例
$array = (987, 2661, 12, 789, 54);
我希望按照这个顺序选择文章
select * from article a.number WHERE (a.number IN ($array))
我如何才能意识到这个结果是由$ array ids排序的?
你是4个回答的人:)
编辑:
Article Table:
id, name etc..
Property Table:
id, article_id, name, value
1, 10, journey_days, 2
2, 30, journey_days, 1
3, 40, journey_days, 5
1, 10, stars, 2
2, 10, stars, 4
3, 10, stars, 0
4, 10, stars, 1
我加入了两个表,但正如您所看到的,该属性在一篇文章中每列的值超过一个。
我需要将Property表连接到article表,并获取从属性表到文章的所有值,如果我创建一个where子句,我只需要获取星标或journey_days。
我怎么能意识到这一点?使用where或on子句选择所有property.name值?
希望你们理解我的问题
答案 0 :(得分:1)
使用implode
:
$s = implode(",", $array);
$q = "select * from article a.number WHERE (a.number IN ($s))";
答案 1 :(得分:0)
您可以构造一个CASE
表达式并按顺序排序,但在数据库之外的PHP中执行此操作可能更好。
... ORDER BY CASE a.number
WHEN 987 THEN 1
WHEN 2661 THEN 2
WHEN 12 THEN 3
WHEN 789 THEN 4
WHEN 54 THEN 5
END;
或者您可以使用FIND_IN_SET
功能:
.... ORDER BY FIND_IN_SET(a.number, "987,2661,12,789,54");