PHP order by子句,数组为order by statement

时间:2013-07-11 12:59:48

标签: mysql arrays list select

我有一个带查询的数组

此数组按标准排序。

现在我想创建一个新查询

示例

$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值?

希望你们理解我的问题

2 个答案:

答案 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");