首先 APPLY 分为 OUTER APPLY 和CROSS APPLY
现在有一个订单表和一个客户表
CREATE TABLE USERS(
USERID INT PRIMARY KEY IDENTITY(1000,1),
USERNAME VARCHAR(10) NULL,
USERSEX BIT NULL
)
CREATE TABLE USERSORDER(
ORDERSID INT PRIMARY KEY IDENTITY(1,1),
ORDERNAME VARCHAR(100) NULL,
ORDERCOMMIT VARCHAR(1000),
USERORDERID INT,
ORDERMONEY MONEY
)
SELECT * FROM USERS
SELECT * FROM USERSORDER
INSERT INTO USERS VALUES('小明',0),('毛阿敏',1),('李白',0),('程普',0)
INSERT INTO USERSORDER VALUES('伊斯兰狗*1','乖巧可爱',1000,7000),('加菲猫','乖巧可爱',1002,10000),('九尾狐狸*1','乖巧可爱',1000,5000),('小鸟依人','乖巧可爱',1000,9000),('啧啧啧*1','哒哒哒',1001,9000)
使用 OUTER APPLY试验
SELECT * FROM USERS A OUTER APPLY(SELECT * FROM USERSORDER U WHERE A.USERID=U.USERORDERID)AS Q
使用 CROSS APPLY试验
SELECT * FROM USERS A CROSS APPLY(SELECT * FROM USERSORDER U WHERE A.USERID=U.USERORDERID)AS Q
可以得出 OUTER APPLY以左边表为主
而CROSS APPLY以右边表为主
不断的努力就是更好的明天