现在我使用此代码:
$query = mysqli_query($conn, "(SELECT * FROM movies WHERE
MATCH(title) AGAINST('".$_SESSION['mtitle']."' WITH QUERY EXPANSION) AND
id NOT LIKE '".$_SESSION['mid']."')
UNION
(SELECT * FROM movies WHERE category LIKE '%".$cat."%' AND
id NOT LIKE '".$_SESSION['mid']."' ORDER BY RAND()) LIMIT 5");
我想列出5部类似的电影。如果第一部分中有5个或更多匹配项,则效果很好。但是,如果不是这样,第二个选择就不是随机的,它总是以相同的顺序写相同的电影。
例如:如果我搜索Jumanji,则第一个建议是Jumanji,第二个建议是Jumanji:欢迎来到丛林。但是最后3部总是同一部电影。
答案 0 :(得分:1)
按分组考虑是您删除所有重复值的答案。
`GROUP BY mtitle`
"(SELECT mtitle FROM movies WHERE
MATCH(title) AGAINST('".$_SESSION['mtitle']."' WITH QUERY EXPANSION) AND
id NOT LIKE '".$_SESSION['mid']."')
UNION
(SELECT mtitle FROM movies WHERE category LIKE '%".$cat."%' AND
id NOT LIKE '".$_SESSION['mid']."') GROUP BY mtitle ORDER BY RAND() LIMIT 5"