我环顾四周,发现了一些类似我的问题,但他们缺乏解释.
我正在尝试搜索具有多列的表.我希望顶部的匹配列数最多的行和底部最少的行.我见过几种做法.我当前和可怕的方式是有很多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.史蒂夫应该排在最前面,接着是鲍勃
我希望这很容易理解.有些人可以给我一个详细的解释说明.
这个怎么样:
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)