Mysql 具有SQL查询而不是组结果

Mysql 具有SQL查询而不是组结果,mysql,sql,join,Mysql,Sql,Join,我有一个sql查询,它通过user\u id连接了几个表,问题是我想查看这些表中的所有数据 目前,我正在查询用户表和付款表,并根据用户id将它们连接起来 我似乎每个用户id只能得到一个结果,现在我知道这意味着什么,但如何(如果可能的话)显示付款表中的所有数据(即我希望看到多个用户id,显示用户已支付的各种付款) 我目前正在使用左连接,我认为这可能是问题所在,但切换它仍然没有显示我所寻找的结果 这是我当前的加入: from user u left join u_subscription us

我有一个sql查询,它通过
user\u id
连接了几个表,问题是我想查看这些表中的所有数据

目前,我正在查询用户表和付款表,并根据
用户id
将它们连接起来

我似乎每个用户id只能得到一个结果,现在我知道这意味着什么,但如何(如果可能的话)显示付款表中的所有数据(即我希望看到多个用户id,显示用户已支付的各种付款)

我目前正在使用左连接,我认为这可能是问题所在,但切换它仍然没有显示我所寻找的结果

这是我当前的加入:

from user u 
left join u_subscription us 
on u.user_id = us.user_id 
left join u_detail ud 
on u.user_id = ud.user_id
任何帮助都将不胜感激

提前谢谢

纳德

完整sql查询:

select u.user_id as 'prop:User id', u.user_username as 'prop:username', u.user_email as 'Identity',u.user_created as 'Timestamp', us.user_subscription_expires as 'prop:Expires on', us.user_subscription_payment_provider as 'prop:Payment provider', us.user_subscription_modified, ud.user_detail_signup_country_iso3 as 'prop:Country'

from user u
left outer join user_subscription us
on u.user_id = us.user_subscription_user_id
left outer join user_detail ud
on u.user_id = ud.user_detail_user_id

我建议使用另一种方法:

select
   'your selected columns'
from
   user u,
   u_subscription us,
   u_detail ud
where 
   u.user_id = us.user_id and
   u.user_id = ud.user_id

这与join方法的工作原理类似,但对我来说,该方法使查询更清晰、更容易理解。。希望有帮助

由于您专门查找一些详细信息/付款,请使用该表作为查询的基础,然后连接到users表,因为该详细信息仅基于某个用户存在。。。但是,如果是有条件的,您可以保留对订阅的加入。差不多

select
      u.*,
      ud.*,
      us.*
   from
      u_detail ud
         join user u
            on ud.user_id = u.user_id
         left join u_subscription us
            on ud.user_id = us.user_id

因为从用户详细信息到用户表的userID是相同的,所以在加入订阅表时使用相同的userID即可。我通常不会对字段使用“*”,但可以从中选择您想要的内容。

我发现您的查询没有任何缺陷。它应该像预期的那样工作


我怀疑
subscription
detail
表中每个用户最多只有一行。这就是为什么您的
左联接
每个用户只生成一行(如果是内部联接,则每个用户最多生成一行)。

能否显示您使用的完整查询?听起来您可能有
按u.user\u id分组
,但如果没有完整的查询,我们无法确定。请显示完整的查询。这很快!我试过左外联,但没成功。我没有在任何地方使用group by。正如@newfurniture所说的,您能向我们展示您的完整查询吗?已添加到编辑中。谢天谢地,这在语法上相当于将左外部联接转换为内部联接,因此无法解决此问题。此外,您提出的方法虽然没有错,但已有20多年的历史,在ANSI 1992年被问题中使用的显式联接语法所取代。我不想代表太多人发言,但我认为你是少数人,认为这更干净、更容易理解。给出了比我在评论中更多的切换理由。。我懂了。。谢谢@GarethD!我学到了很多!我通常认为我的方法更好,但现在我知道了。。这篇文章内容丰富!谢谢你的更正……就是这样,对不起,我没意识到!数据库已更改并覆盖用户信息,而不是添加另一行。谢谢你的建议和其他建议