首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL帮助,使用where子句的重复条目

MySQL帮助,使用where子句的重复条目
EN

Stack Overflow用户
提问于 2010-07-12 10:44:33
回答 4查看 271关注 0票数 0

我的数据库中有两个表:

test1,如下所示:

代码语言:javascript
复制
ID   pubmed_ID
-------------------
1    22
2    22

test2看起来像这样:

代码语言:javascript
复制
antigen    pubmed_ID
------------------
Hello      22
Bye        22

当我使用以下select语句时:

代码语言:javascript
复制
select * 
  from test1, test2 
 where test1.pubmed_ID = test2.pubmed_ID;

我得到了:

代码语言:javascript
复制
ID pubmed_ID antigen pubmed_ID
--------------------------------
1  22        Hello   22   
2  22        Hello   22   
1  22        Bye     22       
2  22        Bye     22

为什么抗原被复制了?当它们在test2表中只存在一次时?

主键如下test1 = "ID“列,对于测试2,”抗原“和"pubmed_ID”形成复合主键

我是不是漏掉了什么简单的东西?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-12 10:48:16

因为两者都是匹配的。你希望它选择哪一个?

所有行都有相同的pubmed_ID。因此,test1的每一行都与test2的每一行匹配,因此在连接表中有四(2*2)行。

票数 2
EN

Stack Overflow用户

发布于 2010-07-12 10:49:16

这是因为根据连接条件,test2中的两条记录与test1中的每条记录都匹配。

如果你想让它更有选择性,你需要添加你想要的过滤条件。

票数 2
EN

Stack Overflow用户

发布于 2010-07-12 10:52:41

您的联接正在按其应有的方式运行。您正在匹配的pumed_ID对于每一行都是相同的。

当DBE从表test1抓取第1行时

代码语言:javascript
复制
ID   pubmed_ID
-------------------
1    22

然后匹配到表test2中具有相同pubmed_ID的行,两行都匹配...

代码语言:javascript
复制
antigen    pubmed_ID
------------------
Hello      22
Bye        22

表test1中的第二行也发生了完全相同的事情,使整个结果集包含四行。

讲得通?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3225561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档