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数组中的值的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询为 PHP 中的 ID 列返回不正确的值

如何对数组php中的所有项目运行sql查询

将 wpdb sql 数组转换为 php 数组

php中的SQL查询与数组中的谓词

BigQuery JavaScript UDF 使用 SQL 查询中的值调用数组

如何从sql server中的表中查询json数组类型列的值?