0

在我必须执行 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 很满意。谢谢)。

4

5 回答 5

1

你基本上只需要两个表之间的连接,如下所示:

SELECT b.col1, a.col1
FROM tablea a 
INNER JOIN tableb b ON a.col1 = b.col2
WHERE a.col3 = 'a'
于 2012-11-20T12:26:15.487 回答
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嵌套查询内部的数据类型与col2where匹配的数据类型。

于 2012-11-20T12:22:33.450 回答
0

尝试这个:

select col1 
from tableB
where col2 in (select col1 
               from tableA 
               where col3='a')
于 2012-11-20T12:23:59.977 回答
0

您可以将单个查询用作,

select col1, col2 from tableB where col2 = 'abc' or col2='xyz'
于 2012-11-20T12:25:12.260 回答
0

我并不完全清楚,但我认为您正在寻找通常的 Join 表达式?

SELECT B.Col1, A.Col1 FROM TableA A 内部连接 ​​TableB B 在 A.Col1 = B.Col2

请参考 Join 表达式。此示例适用于 SQL Server 和更新版本的 Oracle。

于 2012-11-20T12:27:32.547 回答