sql - 根据 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
解决方案
试试这个。
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
推荐阅读
- android - 显示尺寸最大时 parentWidth 返回错误值?
- google-apps-script - “服务错误:电子表格”错误 - 保护类的 Google 脚本问题
- java - 使用 Prometheus 监控 Spring Boot 应用程序
- c# - 当前上下文中不存在名称“filePath”
- allure - 如何使当前的诱惑报告结果文件擦除前一个
- python - 在功能打开和编写中需要帮助
- python - 用诗歌在不同平台上安装不同版本的包
- javascript - CSS 或 JS - 从 html 中隐藏旧元素
- javascript - 在 vue.js 中使用 axios 打印来自 http GET 请求的响应?
- csv - 如何在 Symfony5 中使用 Serializer 规范化日期时间