如何在mysql中合并随机选择的行?

时间:2018-07-30 11:17:20

标签: php mysql session union

现在我使用此代码:

$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部总是同一部电影。

1 个答案:

答案 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"