从表中获取特定列表,然后使用MySQL获取剩余的列表

时间:2013-10-27 08:21:02

标签: php mysql arrays sorting fetch

这是我曾经想过的复杂查询。我知道这将是一个更愚蠢的问题。

我有一个id的数组,里面有超过100个id。我想从数据库中获取所有内容,但首先是等于id的列表,之后我想要剩下的。

我的尝试:

PHP:

$arr = array(3,1,4);
sort($arr)
$implodedArr = implode(" || id = ", $arr);

MySQL的:

SELECT * FROM tablename WHERE id = implodedArr;

我不认为我做的事情是对的。

1 个答案:

答案 0 :(得分:2)

试试这个。策略首先是使用IN运算符,而不是使用大量连接的OR语句 - 这应该更快。然后我们可以使用UNION合并那些不会出现在第一组中的内容。

我已经标记了找到的集合有一个虚拟列" important = 1",用于排序目的,但如果您愿意,可以将其更改为更有意义的内容。

PHP:

$arr = array(3,1,4);
sort($arr)
$implodedArr = implode(",", $arr);

MySQL的:

SELECT
    *, 1 AS important FROM tablename WHERE id IN ($implodedArray)
UNION
SELECT
    *, 0 AS important FROM tablename WHERE id NOT IN ($implodedArray)
ORDER BY
    /* You can order by other fields after "important" if you wish */
    important DESC;