如何从SQL Server中的两个不同表中获取两列的总数?

时间:2015-12-18 05:09:55

标签: c# sql-server

我在SQL Server中有2个表,Table1Table2

Table1包含姓氏与其年龄相关的信息,Table2包含家庭成员及其年龄的信息。

我想得到年龄总数。意味着如果用户在前端输入少于23个,那么我将向用户显示两个表中少于23岁的人数。

我的方法是这样的:

alter procedure example 
   (@age int, @result2 int output)
as
begin
    declare @result int;
    declare @result1 int;

    set @result = (select count(age) from Table1 where age > @age)
    set @result1 = (select count(age) from Table2 where age > @age)

    set @result2 = @result + @result1;
end

hvcid是我Table1中的主键列,hvcidTable2中的外键。

我上面显示的查询返回结果正常。为什么不使用连接或单个查询来组合两个表并从两个表中获取年龄总数?

我不知道如何使用单一查询进行编写?你能解决我的问题吗?

3 个答案:

答案 0 :(得分:3)

您可以使用以下查询从2个表中获取结果:

public static final

答案 1 :(得分:1)

试试这个 @Nag

select (COUNT(t1.age) + COUNT(t2.age)) as Result
from Table1 t1 
FULL JOIN Table2 t2 on t1.hvcid = t2.hvcid
where t1.age > @age and t2.age > @age

答案 2 :(得分:1)

另一种方式

SELECT Sum(cnt) AS total
FROM   (SELECT Count(age) cnt
        FROM   Table1
        WHERE  age > @age
        UNION ALL
        SELECT Count(age)
        FROM   Table2
        WHERE  age > @age) a