我试图在表列中找到重复项,只要该行也是另一个表ex的子项:
表1列
id
Type
表2栏
id
table1Id
table3Id
示例数据:
table 1:
id Type
1 aType
2 myType
3 myType
4 aType
5 myType
6 aType
table 2:
id table1Id table3Id
1 1 1
2 2 1
3 4 2
4 5 1
5 6 2
结果我喜欢:( table1中的行具有相同的Type和table3Id)
table1Id table1Type table3Id
2 myType 1
5 myType 1
4 aType 2
6 aType 2
查询我试过
select table1.id as table1Id, table1.type as table1Type, table2.table3Id as table3Id
from table1, table2
inner join table1 a on table1.Type = a.Type
where a.id <> table1.id and table1.Type = "myType" and table1.id = table2.table1Id
上面的查询给出了一个错误&#34;未知列table1.Type in on子句&#34;
答案 0 :(得分:0)
我不知道查询是否正确,但是由于from子句中的逗号而导致错误。这是一个简单的规则:从不在FROM
子句中使用逗号。 始终使用明确的JOIN
语法。
您可以使用CROSS JOIN
直接解决问题:
select table1.id as table1Id, table1.type as table1Type, table2.table3Id as table3Id
from table1 cross join
table2 inner join
table1 a
on table1.Type = a.Type
where a.id <> table1.id and table1.Type = 'myType' and
table1.id = table2.table1Id;
最好将JOIN
条件放在ON
子句中:
select t1.id as table1Id, t1.type as table1Type, t2.table3Id
from table1 t1 inner join
table2 t2
on t1.id = t2.table1Id inner join
table1 a
on t1.Type = a.Type and a.id <> t1.id
where t1.Type = 'myType' ;
修复了语法错误 - 这是你的问题。如果这没有达到您的期望,那么请提出另一个问题,其中包含样本数据,所需结果以及更清晰的逻辑描述。