Sql查询优先考虑php数组中的值

Posted

技术标签:

【中文标题】Sql查询优先考虑php数组中的值【英文标题】:Sql query prioritising values in php array 【发布时间】:2016-05-31 20:00:27 【问题描述】:

mysql 数据库的 column_x 包含可能存在于 php 数组中的值。

我想查询数据库并优先考虑 PHP 数组中存在 column_x 值的所有行。

我最初的想法是选择一个 column_y,如果 column_x 存在于 php 数组中,则为 1,否则为 0,然后按 column_y DESC 排序。这可能吗?如果是这样,我该怎么做?或者,有没有更好的方法来解决这个问题?

谢谢!

【问题讨论】:

【参考方案1】:

您可以使用ORDER BY column_x IN (list of values) DESC。当条件为真时,值为1,否则为0

$array = array(1, 3, 4, 6);
$str = implode(', ', $array);

$sql = "SELECT * FROM yourTable
        ORDER BY column_x IN ($str) DESC";

如果值来自用户输入,请确保在插入 SQL 之前对其进行清理。

【讨论】:

非常感谢!这正是我需要的:) 如果要控制两组内的排序,您需要在ORDER BY 中添加额外的参数。否则数据库会任意排序。 我的代码中没有任何内容将空白行强制到末尾。 好的,我已经修好了。谢谢巴尔玛!

以上是关于Sql查询优先考虑php数组中的值的主要内容,如果未能解决你的问题,请参考以下文章