我可以看到几个选项。最直接的翻译似乎是:
SELECT CASE
WHEN m2.MATERIAL IS NOT NULL THEN 'Found'
ELSE 'Not Found'
END AS IZZIT_THERE
FROM SCHEMA.MATERIAL_TABLE m2
RIGHT OUTER JOIN SCHEMA.MATERIAL_TABLE m1
ON m1.MATERIAL = m2.MATERIAL
WHERE m1.OLD_MATERIAL LIKE '%55AD%'
但是a的使用RIGHT OUTER JOIN
可能不熟悉。要切换到更熟悉的方式LEFT OUTER JOIN
,我们需要颠倒查询中表的位置并改变条件的呈现方式:
SELECT CASE
WHEN m1.MATERIAL IS NOT NULL THEN 'Found'
ELSE 'Not Found'
END AS IZZIT_THERE
FROM SCHEMA.MATERIAL_TABLE m1
LEFT OUTER JOIN SCHEMA.MATERIAL_TABLE m2
ON m2.MATERIAL = m1.MATERIAL
WHERE m1.OLD_MATERIAL LIKE '%55AD%'
我保持别名相同,以便您可以看到它们在查询中是如何移动的。在这两个查询m1
中都是主表,也就是说,它是必须提供数据的表,而m2
辅助表或“可选”表 - 它可能有也可能没有与主表匹配的数据。
就个人而言,我更喜欢连接而不是子查询,因为我发现它们更容易理解,但是 YMMV.