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'