0

我正在编写一个搜索查询,它根据名字和姓氏进行搜索。查询是这样的:

select fname,lname 
from users 
where fname like fname like '%$name%' or lname like '%$name%';

如果用户在搜索框中输入名字和姓氏,我用“空格”将其分解,查询如下

select fname,lname 
from users 
where fname like fname like '%$f_name%' or lname like '%$l_name%';

在第二个查询中,如果我输入John Thomas,它会向我显示姓名中包含 John 或 Thomas 的所有记录,但实际的搜索结果,即 John Thomas(完全匹配)在结果下方的某个位置。(如果我有 100结果位于第 60 位)。

如何修改查询以实现此目的,还是必须以编程方式处理它?即检查结果数组并匹配复选框值是否存在并显示它。

4

2 回答 2

1

尝试:

SELECT fname, lname FROM users 
WHERE (fname = '$f_name' AND lname = '$l_name') 
OR (fname LIKE '%$f_name%') OR (lname LIKE '%$l_name%');

如果您需要订购,那么ORDER BY lname, fname在查询结束时,当然取决于您需要订购什么。

于 2012-11-20T03:24:54.110 回答
1

在查询中添加

ORDER BY `fname`

你可以在这里测试mysql排序更多信息==> http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html

于 2012-11-20T02:25:36.610 回答