我有以下代码:
$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/