因此,我希望从TableA(帐户表)中找到一个“帐户”列表,该表在表B(信息表)中设置了两个特定值。
表A列出了所有帐户,开设日期,参考资料等,表B包含了这些帐号以及所有特定的帐户信息。
我想要一个在表B中设置了两个特定值的帐户列表。
表和列:
表A:帐号,帐户是否仍处于打开状态?
表B:帐号,信息号,信息数据
我想要一个表A中所有帐户的列表,其中表B中的信息编号1等于10,信息编号2等于20。
样本数据:
表A
Account Number Is Account still open
1234 Yes
12345 No
123456 Yes
表B
Account Number Information Number Information data
1234 1 10
1234 2 20
12345 1 10
12345 2 20
123456 1 1000
123456 2 2000
因此,一旦执行了我的SQL查询,它应该给出帐户1234的最终结果,因为它是唯一一个信息编号1 = 10,信息编号2 = 20并且该帐户仍处于打开状态的帐户。
到目前为止,我唯一想到的就是使用CASE或Union语法。我仍在学习SQL语言,因此任何帮助将不胜感激。希望我已经解释了。
答案 0 :(得分:0)
使用内部联接
SELECT ta.ACCOUNT_NUMBER FROM TABLE A as ta
INNER JOIN TABLE B as tb
ON ta.ACCOUNT_NUMBER = tb.ACCOUNT_NUMBER
WHERE ta.IS_ACCOUNT_OPEN = 'yes'
AND tb.INFORMATION_DATA IN ( 10, 20 )
答案 1 :(得分:0)
尝试此查询:
SELECT * FROM tableA A
WHERE EXISTS(SELECT 1 FROM tableB
WHERE information number 1 = 10
AND information number 2 = 20
AND AccountNumber = A.AccountNumber)
答案 2 :(得分:0)
使用case when
和join
select a.* from TableA a inner join
(select
case when (number=1 and information_number=10)
or (number=2 and information_number=20) then account_number else
null as account_number
from tableB
) b on a.account_number =b.account_number