加权MySql查询搜索

use*_*476 2 php mysql sorting

我环顾四周,发现了一些类似我的问题,但他们缺乏解释.

我正在尝试搜索具有多列的表.我希望顶部的匹配列数最多的行和底部最少的行.我见过几种做法.我当前和可怕的方式是有很多MySQL查询和PHP做的工作.

    +----+-----------+----------+------+-------+
    | ID | firstName | lastName | more | stuff |
    +----+-----------+----------+------+-------+
    |  1 | Bob       | Hope     |    1 |   450 |
    |  2 | Steve     | Hope     |    0 |    29 |
    |  3 | Gary      | Flops    |    1 |     8 |
    +----+-----------+----------+------+-------+
Run Code Online (Sandbox Code Playgroud)

我希望能够搜索lastName = Hope OR more = 1 我希望Bob Hope能够成为最佳人选,因为他匹配了两个要求的东西.我知道在这个例子中这将会发生什么,但这只是一个例子.

如果我查询; lastName = Hope OR firstName = Steve.史蒂夫应该排在最前面,接着是鲍勃

我希望这很容易理解.有些人可以给我一个详细的解释说明.

Mik*_*ike 5

这个怎么样:

SELECT
  id,
  firstName,
  lastName,
  more,
  stuff,
  (lastName = 'Hope') + (firstName = 'Steve') AS weight
FROM mytable
ORDER BY weight DESC;
Run Code Online (Sandbox Code Playgroud)

结果:

+----+-----------+----------+------+-------+--------+
| id | firstName | lastName | more | stuff | weight |
+----+-----------+----------+------+-------+--------+
|  2 | Steve     | Hope     |    0 |    29 |      2 |
|  1 | Bob       | Hope     |    1 |   450 |      1 |
|  3 | Gary      | Flops    |    1 |     8 |      0 |
+----+-----------+----------+------+-------+--------+
Run Code Online (Sandbox Code Playgroud)