在连接另一个表中的数据时查找重复列

时间:2016-04-30 15:04:29

标签: mysql sql

我试图在表列中找到重复项,只要该行也是另一个表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;

1 个答案:

答案 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' ;

修复了语法错误 - 这是你的问题。如果这没有达到您的期望,那么请提出另一个问题,其中包含样本数据,所需结果以及更清晰的逻辑描述。