[英]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.