首页 > 解决方案 > CROSS APPLY 应用于不相关的 JOIN 表

问题描述

我注意到它CROSS APPLY通常用于功能,但我以下列方式使用它:

SELECT pu.UserID UserID,  A.AlertID 
FROM tbl_Users pu
CROSS APPLY 
(Select AlertID from tbl_Alerts) A

基本上对于每个用户,我想让它显示 tbl_Alerts 表中的 2 个警报。

因此,它会显示如下内容:

    UserID    AlertID
    1         1 
    1         2
    2         1
    2         2
    3         1
    3         2

想知道在这种情况下这是否是合法使用CROSS APPLY

标签: sqlsql-servertsql

解决方案


首先,它只会返回一个用户 ID。

合法吗?我认为这要简单得多:

SELECT pu.UserID UserID,  A.AlertID 
FROM tbl_Users pu 
     CROSS JOIN tbl_Alerts A
WHERE pu.Userid = @UserID;

但是您的代码是正确的 SQL。


推荐阅读