sql查询从两个表中生成正确数量的结果

sql查询从两个表中生成正确数量的结果,sql,sqlite,Sql,Sqlite,我创建了一个数据库rocks.db,其中包含两个表:yut和lith yut表包含5列:id、类型、大小、dmu、logb lith表包含3列:id、type、con 每个表中的数据示例如下: 是的: 利特: 我想执行一个查询以从两个表中获取数据,因此我使用了一个内部联接来执行此操作: SELECT yut.id, yut.type, size, dmu, logb, lith.con FROM yut INNER JOIN lith ON yut.type=lith.type WHERE yu

我创建了一个数据库rocks.db,其中包含两个表:yut和lith

yut表包含5列:id、类型、大小、dmu、logb

lith表包含3列:id、type、con

每个表中的数据示例如下: 是的:

利特:

我想执行一个查询以从两个表中获取数据,因此我使用了一个内部联接来执行此操作:

SELECT yut.id, yut.type, size, dmu, logb, lith.con FROM yut INNER JOIN lith ON yut.type=lith.type WHERE yut.type="te" AND size BETWEEN 0 AND 100;
我期望从这个查询中得到的结果是

1|te|45|0.7|-3.4|999
2|te|67|0.6|-2.3|999
但是我得到了

1|te|45|0.7|-3.4|999
1|te|45|0.7|-3.4|999
1|te|45|0.7|-3.4|999
2|te|67|0.6|-2.3|999  
2|te|67|0.6|-2.3|999  
2|te|67|0.6|-2.3|999  

为什么我的代码会三次选择相同的条目?

第二列(类型)的类型是什么?通过常规连接,我得到1 | te | 45 | 0.7 |-3.4 | 999 2 | te | 67 | 0.6 |-2.3 | 999多次重复,而不仅仅是3次这是不可能的。一定有什么东西你没给我们看。只有交叉连接才能从两个表中生成六个结果行(3 x 2)(例如,如果您错误地在yut.type=yut.type上伪连接,并且限制在lith.type=“te”而不是在yut.type=“te”)上,那么您会在结果中看到lith.con 6564。@J.Koot:regular join?这是我第一次听到这种说法。是什么让SQL-86隐式交叉联接成为“常规的”?我刚才使用的是@Walucas使用的术语
1|te|45|0.7|-3.4|999
2|te|67|0.6|-2.3|999
1|te|45|0.7|-3.4|999
1|te|45|0.7|-3.4|999
1|te|45|0.7|-3.4|999
2|te|67|0.6|-2.3|999  
2|te|67|0.6|-2.3|999  
2|te|67|0.6|-2.3|999