我有两张桌子。
单个订单记录可以包含多个复制记录。我想加入这两个表,这样即使存在多个记录,我总是从连接中检索单个记录。 样本数据
Replication table:
ORDID | STATUS | ID | ERRORMSG | HTTPSTATUS | DELIVERYCNT
=========================================================
1717410307 1 JBM-9e92ae0c NULL 200 1
----------
1717410307 1 JBM-9fb59af1 NULL 400 -99
----------
1717410308 1 JBM-0764b091 NULL 403 1
----------
1717410308 1 JBM-0764b091 NULL 200 1
订单表:
ORDID | ORDTYPE | DATE
----------
1717410307 CAR 22-SEP-2011
1717410308 BUS 23-SEP-2011
如何有效地进行连接,以便在订单表和应优先动态选择的复制表中获取尽可能多的记录。
优先级可以定义为:
请指导我如何继续加入?
如果您需要任何澄清,请告诉我。
非常感谢您的帮助!
答案 0 :(得分:0)
是否可以根据ORDER BY
和HTTPSTATUS
使用DELIVERYCNT
条款?
在这种情况下,您可以编写特定的ORDER BY
并从中获取TOP 1
(不知道您使用哪个RDBMS )或获取ROW_NUMBER() OVER (ORDER BY ... ) AS RowN WHERE RowN = 1
}
但这是一个丑陋(但很快)的解决方案。
另一个选项是创建一个子查询,在其中添加一个新列,进行优先级计算。
要使查询生效,您应该考虑索引(或使用RDBMS特定解决方案,如包含列)