我有两个返回单个结果的查询。 他们看起来像这样
// query 1
SELECT A.id FROM tableA A
INNER JOIN tableB B
ON B.id = A.id
WHERE b.status = 'ACTIVE'
// query 2
SELECT C.id FROM tableC C
WHERE c.status = 'ACTIVE'
如何组合它们并返回一对值而不是来自不同查询的一个值?我的意思是得到像[A.id, C.id]
目前我必须在应用程序中使用两个查询,我想将它们合并为一个。
答案 0 :(得分:2)
我认为这样做会
SELECT (SELECT A.id FROM tableA A
INNER JOIN tableB B
ON B.id = A.id
WHERE b.status = 'ACTIVE'
) as 'query1',
(
SELECT C.id FROM tableC C
WHERE c.status = 'ACTIVE'
) as 'query2'
答案 1 :(得分:1)
由于您的问题不明确,所以我假设您需要在一行或不同行中提到查询ids
,您可以使用union all/union
(假设数据类型兼容或可隐式转换)和重复或允许或不允许)如下。
将结果合并到不同的行中。
SELECT A.id
FROM tableA A
INNER JOIN tableB B
ON B.id = A.id
WHERE b.status = 'ACTIVE'
union all
SELECT C.id
FROM tableC C
WHERE c.status = 'ACTIVE'
在单行中合并结果。
select max(id1), max(id2)
from(
SELECT A.id as id1, NULL as id2
FROM tableA A
INNER JOIN tableB B
ON B.id = A.id
WHERE b.status = 'ACTIVE'
union all
SELECT NULL, C.id
FROM tableC C
WHERE c.status = 'ACTIVE'
) t;
答案 2 :(得分:0)
您可以运行以下查询,对我来说没问题:
select t1.id as aid ,t2.id as cid
from (
SELECT A.id
FROM tableA A
INNER JOIN tableB B ON B.id = A.id
WHERE b.status = 'ACTIVE'
) t1
full outer join (
SELECT C.id
FROM tableC C
WHERE c.status = 'ACTIVE'
) t2 on t1.id=t2.id
答案 3 :(得分:0)
您可以使用第一个查询加入第二个查询,如下所示,这样您就可以在一个查询中获得两个(A.id,C.id)值...
SELECT A.ID,C.ID FROM
(SELECT A.ID FROM table_A A INNER JOIN
table_B B ON A.ID=B.ID WHERE B.STATUS='A')A
INNER JOIN table_c C
ON C.ID=A.ID WHERE C.STATUS='A';