gpt4 book ai didi

php - 将左连接限制为返回一个结果?

转载 作者:可可西里 更新时间:2023-11-01 06:31:50 25 4
gpt4 key购买 nike

我目前将此左连接作为查询的一部分:

LEFT JOIN movies t3 ON t1.movie_id = t3.movie_id AND t3.popularity = 0

麻烦的是,如果有几部电影具有相同的名称和相同的受欢迎程度(不要问,就是那样:-))然后返回重复的结果。

综上所述,我想将左连接的结果限制为一个。

我试过这个:

LEFT JOIN 
(SELECT t3.movie_name FROM movies t3 WHERE t3.popularity = 0 LIMIT 1)
ON t1.movie_id = t3.movie_id AND t3.popularity = 0

第二个查询因错误而终止:

Every derived table must have its own alias

我知道我的问题有点含糊,因为我没有提供完整的查询,但我的问题通常是可能的吗?

最佳答案

错误很明显——您只需要在结束 ) 之后为子查询创建一个别名,并在您的 ON 子句中使用它,因为每个表、派生或真实的,必须有自己的标识符。然后,您需要在子查询的选择列表中包含 movie_id 才能加入它。由于子查询已包含 WHERE popularity = 0,因此您无需将其包含在连接的 ON 子句中。

LEFT JOIN (
SELECT
movie_id,
movie_name
FROM movies
WHERE popularity = 0
ORDER BY movie_name
LIMIT 1
) the_alias ON t1.movie_id = the_alias.movie_id

如果您在外部 SELECT 中使用这些列之一,例如通过 the_alias.movi​​e_name 引用它。

更好地理解需求后更新:

要让每个组都有一个加入,您可以在 movie_id 和组上使用聚合 MAX()MIN()它在子查询中。然后不需要子查询 LIMIT - 您将收到每个名称的第一个 movie_id MIN() 或最后一个 MAX ()

LEFT JOIN (
SELECT
movie_name,
MIN(movie_id) AS movie_id
FROM movies
WHERE popularity = 0
GROUP BY movie_name
) the_alias ON t1.movie_id = the_alias.movie_id

关于php - 将左连接限制为返回一个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11388443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com