gpt4 book ai didi

mysql - INNER JOIN 查询产生数千个结果

转载 作者:行者123 更新时间:2023-11-29 22:24:42 25 4
gpt4 key购买 nike

我希望我能正确解释这一点,但我正在构建的 INNER JOIN 查询遇到一些问题。让我试一下:我有一个 friend 表,其中有一个 user1user2 字段,这两个字段都可以是用户的 friend ,具体取决于谁是邀请者、用户或 friend 。现在,所有这些 friend 当然也是用户本身,他们在各自的页面上发布消息。所有这些消息都存储在一个令人惊讶的名为“消息”的表中。我希望用户能够看到他所有 friend 发布的所有消息,为了实现这一点,我创建了以下 INNER JOIN 查询:

SELECT friends.user1, friends.user2, messages.message 
FROM friends
INNER JOIN messages
WHERE (friends.user1 = 'Panda' OR friends.user2 = 'Panda') AND (friends.user1 != 'Panda' OR friends.user2 != 'Panda') AND messages.message != '' AND friends.accepted = '1'

(Panda 当然是测试用户)。发生的情况是,它确实选择了 Panda 的所有 friend ,并且选择了这些 friend 发布的所有消息,但是,我通过此查询得到了一万个结果,因为所有 friend 都在结果中包含了一个 friend 发布的消息。让我尝试澄清这一点:

假设 Panda 的 friend GalwayMonster 发布了:“Lees dit boek!”。在上述查询的结果中,它将显示如下:

GalwayMonster“Lees dit boek!”PaddyPower“李迪特书!”兄弟“李迪特书!”猴子“李迪特书!”(不幸的是,SO 不允许我发布屏幕截图,因为我还没有足够的声誉,所以我想现在必须这样做 - 对此感到抱歉)

依此类推 - 它找到的每个 friend 都会添加 GalwayMonster 向其发布的消息,并且对任何其他 friend 发布的每条帖子都会这样做。

显然,我希望在发布该消息的 friend 处显示正确的消息,如果 friend 没有发布任何内容,我根本不希望该 friend 出现。

我这个查询做错了什么?我是否需要添加一些内容才能使其仅与该 friend 一起显示属于该 friend 的正确消息?

我希望我已经说得足够清楚了,但如果您还有任何其他问题,请告诉我。谢谢一百万!

最佳答案

尝试使用

messages.message IS NOT NULL

而不是

messages.message != ""

这意味着两个不同的事情。也许这会解决您的问题,但如果您可以提供表中的一些示例数据以及表中的列,则会有所帮助。如果您提供的话,如果这不能解决问题,我可以更新答案。

关于mysql - INNER JOIN 查询产生数千个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30374224/

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