mysql内部联接未按预期工作
很抱歉。关于这方面的帖子有一百万篇。不知怎么的,我还是错过了一些东西。简单的内部联接如下所示: 不知道问题是什么。只是尝试将组织添加到机器记录中。mysql内部联接未按预期工作,mysql,join,inner-join,Mysql,Join,Inner Join,很抱歉。关于这方面的帖子有一百万篇。不知怎么的,我还是错过了一些东西。简单的内部联接如下所示: 不知道问题是什么。只是尝试将组织添加到机器记录中。 我预计,如果用户名不匹配,机器记录将被删除,或者不会被删除,但无论如何,您可能希望在此处进行聚合,因为您将获得共享用户名的所有机器的笛卡尔积: select users2.org, machines.User_name, machines.Machine_name, machines.model fr
我预计,如果用户名不匹配,机器记录将被删除,或者不会被删除,但无论如何,您可能希望在此处进行聚合,因为您将获得共享
用户名的所有机器的笛卡尔积:
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例中的用户名最初是电子邮件,另一例中是windows网络id),两个表中丢失的用户名都被更改为“”。这导致了我没有预料到的地方到处都是连接匹配。缺少的用户名字段应具有不同的默认值。我修复了machines表中的默认值,并用“where machines.User_name‘Unknown’;”排除了它们。现在我得到了我期望的结果。除了更好地理解您的数据,这里可能没有什么可学的 啊,再来一个。这有点简化,因为machines表在machine_名称上不是唯一的。实际上,有10到50条记录具有相同的机器名称,包括机器上软件的machines.program、machines.version。我想要所有的机器记录。你能分享你的模式吗?描述机器;机器名varchar(50)、用户名varchar(21)、模型varchar(50)、出版商varchar(100)程序varchar(255)版本varchar(255)产品ID varchar(255)描述用户2user|name | varchar(25)| org | varchar(5)am def在这里获得笛卡尔积。每个用户应该有一台机器。每个用户/机器在机器表中应有多条记录。每个表中的某些记录缺少实际用户名,但它们有一个默认值,如“missing”。是的,这就是您需要的分组依据
,以减少重复值。您可以像我在回答中所做的那样,在加入表之前聚合机器
表。