sql - Oracle SQL 开发人员查询
问题描述
我有两张桌子:
T1
一个 | 乙 | C | D |
---|---|---|---|
1 | 9 | 2 | 不适用 |
2 | 8 | 5 | 不适用 |
3 | 7 | 4 | 不适用 |
T1
X | 是 | Z |
---|---|---|
4 | 9 | 2 |
2 | 3 | 5 |
3 | 5 | 4 |
我想根据与表 T2 的匹配从表 T1 中选择列 D,对于以下条件如果 A 列 = X 列或 B 列 = Y 列和 C 列 = Z 列,则将 D 列选择为 'Y' 否则 'N '。
SELECT CASE WHEN ((T1.A = T2.X OR T1.B = T2.Y) AND T1.C = T2.Z) THEN 'Y'
ELSE 'N'
END AS D FROM T1,T2
在输出中,我得到相同行的 Y 和 N,我只想得到 Y 或 N 作为 D 列。
解决方案
也许你想要exists
:
select t1.*,
(case when exists (select 1
from t2
where t1.a = t2.x or
(t1.b = t2.y and t1.c = t2.z)
)
then 'Y' else 'N'
end) as flag
from t1;
注意:我可能有括号错误。你的英文语句和示例代码有不同的逻辑。
推荐阅读
- angular - 角慢加载初始页面
- php - Laravel 多对多关系返回空数组
- django - 使用 Jinja / Django 显示 Algolia 结果
- php - 我的buddypress自定义标签代码有什么问题?
- php - 如何使用内容类型为 EAN-13 的 php 创建条形码
- python - 如何确定 sshd 的这个 perl 脚本的标准输入内容
- python - 仅将值复制到具有列名的新空数据框 - Pandas
- angular - 为 Angular 6 自定义 Angular Material Datepicker 大小
- angular - 如何不让 mat-sidenav-content 占用网页上的空白空间
- amazon-s3 - 从 MapR 到 Amazon S3 的数据迁移