我在SQL Server中有2个表,Table1
和Table2
。
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
中的主键列,hvcid
是Table2
中的外键。
我上面显示的查询返回结果正常。为什么不使用连接或单个查询来组合两个表并从两个表中获取年龄总数?
我不知道如何使用单一查询进行编写?你能解决我的问题吗?
答案 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