首先拼接效果,我需要得到精確匹配像SQL - 從2個表
SELECT * FROM movies WHERE title='STRING' ORDER BY x DESC
,然後附加到與LIKE匹配
SELECT * FROM movies WHERE title LIKE '%STRING&' AND title<>'STRING' ORDER BY x DESC
這些結果查詢與和最多10個限制這些結果結果。
UNION wont`t做的工作,因爲它的所有排序結果一起返回錯誤的順序(我需要精確匹配,然後再與LIKE)
SELECT * FROM movies WHERE title='STRING' UNION
SELECT * FROM movies WHERE title LIKE '%STRING%' ORDER BY x DESC LIMIT 10
我得到了最好的解決方案是使用multi_query()
$query = "SELECT * FROM movies WHERE title='STRING' ORDER BY x DESC; ";
$query .= "SELECT * FROM movies WHERE title LIKE '%STRING%' AND title<>'red' ORDER BY x DESC";
$Dbi->multi_query($query);
do {
$sql = $Dbi->store_result();
while($x = $sql->fetch_array()) {
...
}
} while($Dbi->next_result());
但在這種情況下,不可能在內部循環中使用任何mysql,並且還必須有更好的解決方案!
只需在'LIMIT 10'之前添加',x DESC'。我更喜歡這個,因爲它使用'STRING'兩次,而@ gordon-linoff解決方案使用它3次 – user1612250