-1

我有一个带有查询的数组

该数组按标准排序。

现在我想做一个新的查询

样本

$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

我加入了这两个表,但正如您所见,对于一篇文章,该属性每列有一个以上的值。

我需要将属性表加入到文章表中,并获取从属性表到文章的所有值,如果我创建一个 where 子句,我只会得到星星或旅程天数。

我怎么能意识到这一点?选择带有 where 或 on 子句的所有 property.name 值?

希望大家能理解我的问题

4

2 回答 2

1

使用implode

$s = implode(",", $array);
$q = "select * from article a.number WHERE (a.number IN ($s))";
于 2013-07-11T13:03:16.127 回答
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");
于 2013-07-12T09:07:22.180 回答