3,491
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE Table_A(EID NUMBER PRIMARY KEY);
/
CREATE TABLE Table_B(EID NUMBER PRIMARY KEY,EMail VARCHAR2(300));
/
INSERT INTO Table_A(EID)
SELECT 1 FROM Dual UNION ALL
SELECT 2 FROM Dual UNION ALL
SELECT 3 FROM Dual UNION ALL
SELECT 4 FROM Dual;
/
INSERT INTO Table_B(EID,Email)
SELECT 3,'123@qq.com' FROM Dual UNION ALL
SELECT 4,'234@qq.com' FROM Dual;
/
COMMIT;
--有返回记录
SELECT a.EID
FROM Table_A a
LEFT JOIN Table_B b ON a.EID = b.EID;
-- 无返回记录???
SELECT a.EID
FROM Table_A a
LEFT JOIN (SELECT EID,EMail FROM Table_B WHERE EID IN (3,4)) b ON a.EID = b.EID;
-- 加一列,又返回记录了!!!
SELECT a.EID,b.Email
FROM Table_A a
LEFT JOIN (SELECT EID,EMail FROM Table_B WHERE EID IN (3,4)) b ON a.EID = b.EID;
-- 用COUNT(*)包一层,结果居然是0
SELECT COUNT(*)
FROM (SELECT a.EID,b.Email
FROM Table_A a
LEFT JOIN (SELECT EID,EMail FROM Table_B WHERE EID IN (3,4)) b ON a.EID = b.EID);