首页 > 解决方案 > 根据 TABLE 优先级提取 ID

问题描述

CREATE TABLE T( ID  VARCHAR2(100), DUEDAY VARCHAR(400))
CREATE TABLE T1( ID  VARCHAR2(100), DUEDAY VARCHAR(400))

INSERT INTO T VALUES ('500001', '13')
INSERT INTO T VALUES ('500002', '13')
INSERT INTO T VALUES ('500003', '13')
INSERT INTO T1 VALUES ('500001', '14')
SELECT T.* , 'T TABLE' FROM T

UNION ALL

SELECT T1.*, 'T1 TABLE' FROM T1

如您所见,表 T1 中存在 id 500001 的数据。如果到期日为 14,那么即使它存在于表 T 中,也不应在 13 时提取数据。

在此处输入图像描述

预期输出:500002 500003

标签: sqloracle

解决方案


试试这个。

SELECT T1.* FROM T1
                WHERE T1.DUEDAY = 13
UNION ALL
SELECT T.* FROM T 
               LEFT JOIN T1 ON t1.ID = t.ID
               WHERE T.DUEDAY = 13 AND T1.ID IS NULL

推荐阅读