MySQL - 按案例排序什么时候不起作用

时间:2015-12-29 12:50:26

标签: php mysql search sql-order-by case

我有一个表'用户'有两列(id,full_name)我创建了一个使用PHP的搜索框,之后我搜索了如何按相关性进行排序我找到了解决方案但它没有正常工作所以如果有三个包含John Smith全名的行然后它只给我一个结果就是表

 id  |   full_name
 1   |   John Smith
 2   |   John Smith
 3   |   John Smith

这是我的代码

$find = $_GET['q'];
$values=explode(" ", $find);
$sql="SELECT * FROM users WHERE";
$i=0;
foreach($values as $v)
{
$v=trim($v);
if($i==0)
{
$sql.=" full_name LIKE '%$v%'";
}
else
{
$sql.=" OR full_name LIKE '%$v%'";
}

$i++;
}
$sql.="GROUP BY full_name ORDER BY CASE WHEN full_name like '$find %' THEN 0
           WHEN full_name like '$find%' THEN 1
           WHEN full_name like '% $find%' THEN 2
           ELSE 3
      END, full_name";
$query3 = mysql_query($sql) or die(mysql_error());
while ($row3 = mysql_fetch_array($query3)) {
echo $row3['full_name']."<br/>";
}

所以我的问题是,当我搜索John时,它只给我一个 John Smith 的结果,而我希望它能给我

  • John Smith
  • John Smith
  • John Smith

我将不胜感激任何帮助

1 个答案:

答案 0 :(得分:3)

删除它将GROUP BY full_name名称组合在一起的John Smith