簡體   English   中英

MySQL-按情況排序不起作用

[英]MySQL - ORDER BY CASE WHEN doesn't work

我有一個具有兩列(id,full_name)的表'users',我用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,而我希望它能給我

  • 約翰·史密斯
  • 約翰·史密斯
  • 約翰·史密斯

我將不勝感激任何幫助

刪除GROUP BY full_name它會將John Smith名稱分組在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM