mysql内连接不按预期工作

时间:2017-04-05 19:08:24

标签: mysql join inner-join

对此感到抱歉。关于这一点有一百万个帖子。不知怎的,我仍然缺少一些东西。简单的内连接完全如下: http://www.w3resource.com/mysql/advance-query-in-mysql/inner-join-with-multiple-tables.php

无能为力是什么问题。只是尝试将组织添加到机器记录中。 我希望如果user_name上没有匹配项,那么机器记录将被删除,或者不是,但无论如何,< =机器中的记录数。获得倍数。 Machines.machine_name和user_name在计算机中不是唯一的,因为每台计算机都跟踪了多个软件包。

选择users2.org,machines.User_name,machines.Machine_name,machines.model,machines.program,machines.version 来自机器内部联接users2 on users2.user_name = machines.User_name

2 个答案:

答案 0 :(得分:0)

您可能希望在此汇总,因为您将获得共享user_name的所有计算机的笛卡尔积:

select users2.org, 
       machines.User_name,
       machines.Machine_name, 
       machines.model 
from machines 
inner join users2 on users2.user_name = machines.User_name
GROUP BY users2.org, machines.User_name, machines.Machine_name, machines.model

答案 1 :(得分:0)

感谢您的投入。问题在于,当数据被按下时(user_name原本是1个案例中的电子邮件而另一个是windows网络id),两个表中缺少的user_names都变为''。这导致连接匹配到我没想到的地方。缺少的user_name字段应该具有不同的默认值。我修复了机器表中的默认值,并用“where machines.User_name<>'Unknown';”将它们排除在外。现在我得到了我期望的结果。除了更好地了解您的数据之外,可能无需学习任何内容。