我正在修改将用户信息连接到一个表中的现有语句,以便用户信息可以来自另一个表。一个是永久表,另一个是临时表(记录从一个表移动到另一个表)。我将我的加入更改为左加入,然后左加入第二个联系信息表。如果永久字段存在,我需要选择永久字段,如果永久字段不存在,我需要选择临时字段。154306 是我从中选择的主表上所有传入记录的用户 ID。这是我选择字段的两个选项:
SELECT
CASE WHEN U.USRID = 154306
THEN T.TMPFNAME
ELSE U.FNAME
END AS FNAME,
COALESCE (U.LNAME, T.TMPLNAME) AS LNAME
FROM FILES.ORDERS O
LEFT JOIN FILES.USERS U ON U.USRID <> 154306 AND U.USRID = O.ORDUSR
LEFT JOIN FILES.TMPUSERS T ON O.ORDNUM = T.TMPORD
我认为这种情况似乎更“正确”,因为它实际上是在控制流量,但由于合并的逻辑较少,它可能会执行得更快。两者都应该完成相同的结果,因为 2 个左连接确保我们无论如何都能获得用户的信息,但不会获得仍分配给临时用户的订单的永久用户信息。看起来我们有 10 个字段要进行案例/合并,所以我认为性能更好的方法是要走的路,我认为这是合并,但我什至不确定。任何一种方式都更好吗?