如果伪想法有点混乱,请道歉。
基本上我有3个表,这些表与属性没有完全匹配。
我需要比较表1中任何值2-5是否与某个属性上表2中的任何值匹配
OR
表1中的任何值2-5是否与特定属性
上的表3匹配如果匹配,则会将它们插入到新表格中。
当我在没有另一个的情况下运行Inner join时,我似乎从任何一个语句都收到了我想要的过滤结果。当我将它们加在一起时,我得不到正确的结果。
有没有办法组合内部联接或使用任何其他类型的语法/命令来进行这种比较搜索/插入?
提前感谢您提供的任何帮助!
Additional information: Cache::createRegion: "exampleRegion" region exists in local cache
答案 0 :(得分:1)
您需要使用LEFT JOIN
,否则您将只获得两个表中存在的结果。然后,您需要使用NULL
处理来确保至少有一个匹配(在WHERE
中)。您可以使用COALESCE
:
SELECT
t1.attribute1,
t1.attribute2,
t1.attribute3,
t1.attribute4,
t1.attribute5,
t1.attribute6
FROM table1 t1
LEFT JOIN table2 t2
ON t1.attribute2 = t2.attribute9
OR t1.attribute3 = t2.attribute9
OR t1.attribute4 = t2.attribute9
OR t1.attribute5 = t2.attribute9
LEFT JOIN table3 t3
ON t1.attribute2 = t3.attribute8
OR t1.attribute3 = t3.attribute8
OR t1.attribute4 = t3.attribute8
OR t1.attribute5 = t3.attribute8
WHERE COALESCE(t2.attribute9,t3.attribute8) IS NOT NULL
答案 1 :(得分:0)
您可以使用EXISTS
来获得预期结果:
SELECT
t1.attribute1,
t1.attribute2,
t1.attribute3,
t1.attribute4,
t1.attribute5,
t1.attribute6
FROM table1 t1
where exists (select * from table2 t2
where t1.attribute2 = t2.attribute9
OR t1.attribute3 = t2.attribute9
OR t1.attribute4 = t2.attribute9
OR t1.attribute5 = t2.attribute9)
OR
exists (select * from table3 t3
WHERE t1.attribute2 = t3.attribute8
OR t1.attribute3 = t3.attribute8
OR t1.attribute4 = t3.attribute8
OR t1.attribute5 = t3.attribute8)