[英]MS-Access SQL Select one of two columns if value occurs in another table
我怎样才能 select 来自两列之一的值,其中值包含在另一个表中?
源表:
数据A | 数据B |
---|---|
苹果 | 苹果 |
橙子 | 奥拉 |
松果 | 菠萝 |
计算机 | ABCD123 |
检查条目的表:
数据C |
---|
苹果 |
橙子 |
菠萝 |
结果查询:
结果 |
---|
苹果 |
橙子 |
菠萝 |
源表的第四个条目(Computer/ABCD123)无效,因为检查表中既不存在“Computer”也不存在“ABCD123”。
我试过了:
Select
Switch(
DataA in (SELECT DataC FROM CheckTable), DataA, --if DataA is found in DataC, select DataA
DataB in (SELECT DataC FROM CheckTable), DataB, --if DataB is found in DataC, select DataB
) AS Result --return variable 'Result'
FROM SourceTable;
没有成功。
尝试:
select distinct DataC as result
from check_tbl
where DataC in (select distinct DataA
from source_tbl)
or DataC in ( select distinct DataB
from source_tbl)
数据示例:
create table source_tbl(
DataA varchar(30),
DataB varchar (30) );
insert into source_tbl values
('Apple','Apple'),
('Orange','Ora'),
('Pinea','Pineapple'),
('Computer','ABCD123');
create table check_tbl(
DataC varchar(30) );
insert into check_tbl values
('Apple'),
('Orange'),
('Pineapple');
结果:
result Apple Orange Pineapple
演示: https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=8b0a13a07ae245b00616bb24b0a972b0
一个简单的UNION
就可以了:
SELECT DataA
FROM Demo1 INNER JOIN DemoCheck ON Demo1.DataA = DemoCheck.DataC;
UNION
SELECT DataB
FROM Demo1 INNER JOIN DemoCheck ON Demo1.DataB = DemoCheck.DataC;
UNION
仅检索一次该值,即使它们存在于联合的两个部分中也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.