在我必须执行2个查询的情况下,我想通过简单的一行查询来替换它。例如:
select col1, col2 from tableA where col3 = 'a';
这将返回(考虑)2行:
col1 col2
abc abc.bcd
xyz xyz.pqr
现在,在第二个表中,我们对查询1中的每一行进行了不同的查询:
select col1 from tableB where col2 = 'abc';
(AND)
select col1 from tableB where col2 = 'xyz';
这将给出如下结果集:
TableB
col1
1111
2222
如果问题不清楚请提及,我将尝试用更好的例子来阐述。
(虽然数据库供应商没有问题,我对oracle或mysql很满意。谢谢)。
答案 0 :(得分:1)
你基本上只需要在这两个表之间进行连接:
SELECT b.col1, a.col1
FROM tablea a
INNER JOIN tableb b ON a.col1 = b.col2
WHERE a.col3 = 'a'
答案 1 :(得分:0)
您可以制作一个类似的查询:
select col1 from tableB where col2 = 'abc' or col2 = 'xyz';
如果要检查大量字符串,则可以使用:
select col1 from tableB where col2 in ('abc','xyz','mno');
更新:您可以使用嵌套查询,例如:
select col1 from tableB where col2 in (select col1 from tableA where col3='a');
但请确保嵌套查询中的col1
数据类型与col2
之后的where
数据类型匹配。
答案 2 :(得分:0)
试试这个:
select col1
from tableB
where col2 in (select col1
from tableA
where col3='a')
答案 3 :(得分:0)
您可以将单个查询用作
select col1, col2 from tableB where col2 = 'abc' or col2='xyz'
答案 4 :(得分:0)
对我来说并不完全清楚,但我认为您正在寻找通常的加入表达式?
SELECT B.Col1,A.Col1 FROM TableA A.Col1 = B.Col2
上的内连接TableB B.请参阅Join表达式。此示例适用于SQL Server和更新版本的Oracle。