gpt4 book ai didi

sql - MySQL LEFT JOIN RAND() - 奇怪的行为?还是我做错了什么?

转载 作者:行者123 更新时间:2023-11-29 07:10:33 24 4
gpt4 key购买 nike

我几乎可以肯定我做错了什么,但我不知道到底是什么。

查询运行良好几次,有时会无缘无故地返回一个空的 aff_affiliatelink。如果我从第一个 JOIN 中删除 RAND(),一切正常,但是,我需要一个随机的附属...知道是什么原因造成的吗?

编辑:刚注意到,失败的aff_affiliatelink 的game_software 始终为“2”。不知道它是否有任何联系,但它可能有助于理解问题所在。

这是我的查询:

   SELECT game_software,
aff_affiliatelink
FROM games g
LEFT JOIN (SELECT asoft_affiliateid,asoft_softwareid
FROM affiliates_software
ORDER BY RAND() ) aff_soft ON aff_soft.asoft_softwareid =g.game_software
LEFT JOIN (SELECT aff_id,
aff_affiliatelink,
aff_description,
aff_bonus,
aff_title,
aff_image,
aff_imagealt,
aff_banner,
aff_banneralt
FROM affiliates
WHERE aff_isactive = 1) aff ON aff_id=aff_soft.asoft_affiliateid
GROUP BY game_id
ORDER BY game_releasedate DESC

EDIT :将第二个 LEFT JOIN 更改为 INNER JOIN 后,它似乎有效,但我不确定这是正确的方法....如果有人有其他想法,请告诉我,我会保留这个问题,直到我得到一个像样的答案。

最佳答案

问题是您稍后要重新排序查询。如果您试图从随机附属公司获得单个项目,您应该在 ORDER BY RAND() 之后添加一个 LIMIT 1。否则,该订单只会减慢您的查询速度,因为它稍后会被外部订单覆盖。

哦,你应该看看this blog post关于 ORDER BY RAND()...

关于sql - MySQL LEFT JOIN RAND() - 奇怪的行为?还是我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4783285/

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