php - 当使用 OR 给出两个条件时,如何在 MYSQL 中设置条件的优先级?

标签 php mysql

我有以下代码:

  $sqlquery1 = "SELECT * 
                FROM item 
                WHERE item.title LIKE '%abc%' 
                   OR item.idescription LIKE '%abc%'";

这运行得很好。

唯一的问题是我想先显示第一个 OR 条件 (item.title) 的结果,然后再显示下一个条件。

Eg of current output:

题目:代数
描述:abc inc

标题:ABC
描述:dsdsinc

标题:AlABC广告
描述:sds inc

Eg of Desired output:

标题:ABC
描述:dsdsinc

标题:AlABC广告
描述:sds inc

题目:代数
描述:abc inc

最佳答案

如果您希望以特定顺序返回行,请添加 ORDER BY 子句。

为了满足规定的规范,这就足够了:

 ORDER BY item.title LIKE '%abc%' DESC

这是可行的,因为 MySQL 计算 bool 表达式并将结果作为整数返回:TRUE 返回 1,FALSE 返回 0,NULL 或未知返回 NULL。我们可以通过一个简单的测试来证明这一点,例如

SELECT 'abc' LIKE '%abc%'
     , 'foo' LIKE '%abc%'
     ,  NULL LIKE '%abc%'

并且看到 MySQL 分别返回 1、0 和 NULL。

就我个人而言,我更喜欢在 ORDER BY 中使用更多表达式来使结果更具确定性,从而保证以可预测和可重复的顺序返回行。

关于php - 当使用 OR 给出两个条件时,如何在 MYSQL 中设置条件的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35875943/

相关文章:

php - 选择更好的结果匹配

Mysql 显示 100% 内存使用率

java - getValueAt() 将数据库中的条目加倍

php - 解码 while 循环中获取的值

php - 在代码中组织 MySQL 查询的正确方法?

javascript - 使用 PHP 使用 CSV 内容填充 jQuery 数组

php - 如何在 Directus 中显示多对多关系的标签?

php - foreach 改变最后一个元素

php - 如何使用带有 'e' 修饰符的 preg_replace() 传递参数?

MySql 被消灭了