Mysql sql:组合2个查询以得到1个结果集

Mysql sql:组合2个查询以得到1个结果集,mysql,sql,database,oracle,Mysql,Sql,Database,Oracle,在我必须执行两个查询的情况下,我想用一行简单的查询来代替它。例如: select col1, col2 from tableA where col3 = 'a'; 这将返回(考虑)2行: 现在,在第二个表中,我们对查询1中的每一行进行了不同的查询: select col1 from tableB where col2 = 'abc'; (AND) select col1 from tableB where col2 = 'xyz'; 这将产生如下结果集: TableB

在我必须执行两个查询的情况下,我想用一行简单的查询来代替它。例如:

select col1, col2 from tableA where col3 = 'a';
这将返回(考虑)2行:

现在,在第二个表中,我们对查询1中的每一行进行了不同的查询:

   select col1 from tableB where col2 = 'abc';
   (AND)
   select col1 from tableB where col2 = 'xyz';
这将产生如下结果集:

 TableB
 col1    
 1111    
 2222   
如果问题不清楚,请提出来,我将尝试用更好的例子来阐述


(虽然数据库供应商不是问题,但我对oracle或mysql很满意。谢谢)。

您可以进行如下单个查询:

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
数据类型与
where
之后的
col2
数据类型匹配。

尝试以下操作:

select col1 
from tableB
where col2 in (select col1 
               from tableA 
               where col3='a')

您可以将单个查询用作

select col1, col2 from tableB where col2 = 'abc' or col2='xyz'

您基本上只需要在两个表之间建立一个连接,如下所示:

SELECT b.col1, a.col1
FROM tablea a 
INNER JOIN tableb b ON a.col1 = b.col2
WHERE a.col3 = 'a'

我不太清楚,但我想你是在寻找一个常用的连接表达式

从A.Col1=B.Col2上的表A内部联接表B中选择B.Col1,A.Col1


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

abc和xyz是在执行查询1之前未知的结果。这不会输出2列..?我不认为选择正确的列数是真正的问题。@Rene非常感谢它的工作。公平点,但考虑到示例最终结果集包含TableA.col1,我不认为subselect是正确的解决方案。。当然这是一个简单的连接?@StevieG:我不擅长pl/sql或数据库查询。但是在后端(java)中,我必须对结果1中的每一行进行循环,并构建结果集2。这有什么帮助?”xyz'是存储在表a中的值吗?@StevieG:他只是从一张表中询问。他想要的结果也是来自一张桌子。因此,只有一个表tableB就足够了OP想要的结果是
tableB.col1,TableA.col1
,不是吗?还是我遗漏了什么?这个问题的标题也是“将两个查询合并为一个结果集”,所以我认为他可能想要加入。@Ranajan Sarma:@Rene的答案似乎是正确的。但我仍然想知道,即使在
SELECT
query中只查询
Col1
,如何在结果集中同时获得
Col1和Col2
。@Daredev:你说得对。雷内的回答非常有效,在我的第二个结果集中,第2列不应该出现。我来做编辑。
SELECT b.col1, a.col1
FROM tablea a 
INNER JOIN tableb b ON a.col1 = b.col2
WHERE a.col3 = 'a'