![]() |
1
2
考虑名称是否不唯一。如果您有以下数据:
然后查询1给出:
因为表1中的行1和2分别与表2中的行1和2匹配。 查询2没有给出任何信息。 查询3给出了
因为表1中的行1与表2中的行2匹配,表1中的行2与表2中的行1匹配。因此,当表1中只有2行时,可以从表1中得到4行。 |
![]() |
2
1
您确定两个表中的名称和ID都是唯一的吗? 如果没有,您可能会遇到这样的情况,例如,表1中有: 姓名:弗莱德 身份证:1 表2有: 姓名:弗莱德 身份证:1 姓名:弗莱德 身份证:2 在这种情况下,表1中的记录将由两个查询返回:id和name都匹配,name匹配,但id不匹配。 您可以通过交叉两个查询的每个组合来缩小问题范围,以找出重复项是什么,例如:
|
![]() |
3
1
假设t2.id有一个唯一的约束,这个场景在逻辑上仍然可能发生。如果对于t1中的每个记录,t2中都有两个对应的记录:
例如,在第一个和第三个查询中可以出现T1的相同记录。 也可以在第二个和第三个查询中同时获取同一行。 如果t2.id不能保证是唯一的,那么您可以在所有三个查询中从T1中获得相同的行。 |
![]() |
4
0
我认为最后一个查询可能是获取额外行集的查询。 也就是说,它依赖于两个表中的名称匹配(而不是ID) |
![]() |
5
0
要查找有问题的数据(并帮助查找逻辑漏洞),我建议: (注意伪代码) 将结果限制为仅从…中选择ID。
这将显示与多个子查询匹配的记录。 |
![]() |
Community wiki · SQL语法新手 1 年前 |
|
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |