使用 MySQL 从表中获取特定列表,然后获取剩余的列表
Posted
技术标签:
【中文标题】使用 MySQL 从表中获取特定列表,然后获取剩余的列表【英文标题】:Fetch a particular list from table and fetch the remaining afterwards, using MySQL 【发布时间】:2013-11-06 02:48:35 【问题描述】:这是我曾经想过的复杂查询。我知道这将是一个更愚蠢的问题。
我有一个 id 数组,其中包含 100 多个 id。我想从数据库中获取所有内容,但首先是等于 id 的列表,然后我想要剩余的。
我的尝试:
php:
$arr = array(3,1,4);
sort($arr)
$implodedArr = implode(" || id = ", $arr);
SELECT * FROM tablename WHERE id = implodedArr;
我认为我所做的一切都不对。
【问题讨论】:
【参考方案1】:试试这个。首先的策略是使用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;
【讨论】:
以上是关于使用 MySQL 从表中获取特定列表,然后获取剩余的列表的主要内容,如果未能解决你的问题,请参考以下文章