首先拼接效果,我需要得到精确匹配像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