Sql 从两个查询返回一对值,而不是一个值
我有两个查询返回单个结果。 它们看起来像这样Sql 从两个查询返回一对值,而不是一个值,sql,Sql,我有两个查询返回单个结果。 它们看起来像这样 // 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,
// 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]
目前,我必须在应用程序中使用两个查询,我想将它们合并为一个。我想这样就可以了
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'
我想这样就可以了
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'
由于您的问题不清楚,所以我假设您需要在一行或不同行中使用上述查询的ID,您可以使用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;
由于您的问题不清楚,因此我假设您需要一行或不同行中所述查询的ID,您可以使用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;
您可以运行以下查询,这对我来说很好:
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
您可以运行以下查询,这对我来说很好:
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
您可以将第二个查询与第一个查询连接起来,如下所示,以便在一个查询中获得两个A.id、C.id值 从中选择A.ID、C.ID 从表A中选择A.ID作为内部联接 A.ID=B.ID上的表,其中B.STATUS='A'A 内部联接表
在C.ID=A.ID上,其中C.STATUS='A' 您可以将第二个查询与第一个查询连接起来,如下所示,以便在一个查询中获得两个A.id、C.id值 从中选择A.ID、C.ID 从表A中选择A.ID作为内部联接 A.ID=B.ID上的表,其中B.STATUS='A'A 内部联接表
在C.ID=A.ID上,其中C.STATUS='A' 是否将此2查询作为子查询?它们之间有关系吗?请指定当前的结果,以及它们的组合。@Lee问题是它们根本没有连接,就像不同的表一样on@user1432980.. 因为如果每个表的结果不止一个。。将它们连接在一起后,可能会使记录计数加倍。请提供当前输出的示例。现在解释一下如何组合测试结果。如果这两个查询产生的行数不同,会发生什么情况?将这两个查询作为子查询?它们之间有关系吗?请指定当前的结果,以及它们的组合。@Lee问题是它们根本没有连接,就像不同的表一样on@user1432980.. 因为如果每个表的结果不止一个。。将它们连接在一起后,可能会使记录计数加倍。请提供当前输出的示例。现在解释一下如何组合测试结果。如果这两个查询产生的行数不同,会发生什么情况?