Ume*_*mer 0 sql-server union sql-server-2008
我有一个SQL Server查询:
SELECT top 1 vConsentInfo FROM
(
SELECT cons.vConsentInfo,cons.dTimeStamp ,logs.iPartnerProfileID
FROM H_OutMessageLog logs INNER JOIN H_OutMessageConsent cons on cons.iOutMessageQID = logs.iOutQueueID
WHERE logs.iPatID = 65686 and logs.iPracID = 4
UNION
SELECT cons.vConsentInfo,cons.dTimeStamp,Q.iPartnerProfileID
FROM H_OutMessageQueue Q INNER JOIN H_OutMessageConsent cons on cons.iOutMessageQID = Q.iOutQueueID
WHERE Q.iPatID = 65686 and Q.iPracID = 4
) A
WHERE A.iPartnerProfileID = Prof.IPartnerProfileID
Order BY dTimeStamp DESC
Run Code Online (Sandbox Code Playgroud)
该表的作用如下:H_OutMessageQueue在开头插入记录; 然后它插入H_OutMessageConsent...现在有一个单独的工作进程处理记录H_OutMessageQueue并将其记录到H_OutMessageLog....
我可以摆脱这UNION件事吗?请注意,这是较大CTE查询的子查询.
是的,但可能不会更好.您必须将此工作放入更大的查询中
SELECT TOP 1
cons.vConsentInfo,
ISNULL(logs.iPartnerProfileID , Q.iPartnerProfileID) AS iPartnerProfileID
FROM
H_OutMessageConsent cons
LEFT JOIN
H_OutMessageLog logs ON cons.iOutMessageQID = logs.iOutQueueID AND
logs.iPatID = 65686 and logs.iPracID = 4
LEFT JOIN
H_OutMessageQueue Q ON cons.iOutMessageQID = Q.iOutQueueID AND
Q.iPatID = 65686 and Q.iPracID = 4
WHERE
ISNULL(logs.iPartnerProfileID , Q.iPartnerProfileID) IS NOT NULL
ORDER BY
cons.dTimeStamp DESC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7858 次 |
| 最近记录: |