gpt4 book ai didi

mysql - 在连接来自另一个表的数据时查找重复列

转载 作者:行者123 更新时间:2023-11-30 22:19:53 24 4
gpt4 key购买 nike

仅当该行也是另一个表的子行时,我才尝试在表列中查找重复项,例如:

表 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 中具有相同类型和 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

上面的查询给我一个错误“未知列 table1.Type in on 子句”

最佳答案

我不知道查询是否正确,但由于 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' ;

这修复了语法错误——这是你的问题。如果这没有达到您的预期,请提出另一个问题,包括示例数据、所需结果和更清晰的逻辑描述。

关于mysql - 在连接来自另一个表的数据时查找重复列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36956484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com