【发布时间】:2021-04-25 02:53:45
【问题描述】:
我有三个表(t1、t2 和 t3)。见下文:
第一张桌子:
ID AMOUNT
1 100
2 50
第二张桌子:
ID TYPE
1 A
2 B
第三张表:
TYPE GRADE
A X
B Y
B Z
我们首先通过 ID 进行内连接 t1 和 t2,然后通过 TYPE 进行内连接 t2 和 t3。
SELECT
t1.ID as ID,
t1.AMOUNT as AMOUNT,
t2.TYPE as TYPE,
t3.GRADE as GRADE
FROM t1
INNER JOIN t1 ON t1.ID=t2.ID
INNER JOIN t2 ON t2.TYPE=t3.TYPE
决赛桌
ID AMOUNT TYPE GRADE
1 100 A X
2 50 B Y
2 50 B Z
我需要按 ID 和 TYPE 检查重复,如果总记录> 1,我需要删除 GRADE = Z 的。
所以最终期望的输出应该是
ID AMOUNT TYPE GRADE
1 100 A X
2 50 B Y
【问题讨论】:
-
WHERE GRADE <> 'Z'??? -
很好的建议,但是如果没有重复的记录的等级=z怎么办?这行不通。
-
FROM t1 INNER JOIN t1 ON t1.ID=t2.ID INNER JOIN t2 ON t2.TYPE=t3.TYPE
标签: sql join duplicates