我有 2 个查询,它们都运行良好并提取了我正在寻找的结果。但是,我需要能够从另一个结果中运行一个查询。这是 t-sql/mssql/sybase
例如,以下查询用于计算每个值在 case 表的“referred_link”列中显示的次数/行数,并仅显示出现 3 次或更多次的那些:
SELECT cases.referred_link, count(*)
FROM CASES
GROUP BY referred_link
HAVING COUNT(*) >= 3
下一个查询从各种表中提取一堆数据并根据所需条件进行过滤。问题是,我只希望第二个查询在第一个查询的结果上运行...在referred_link 表上显示 3 次以上的项目。
select * from cases inner join names on cases.referred_link=names.names_id
left join (select * from mailing_list_defined where mailing_list='home_addr') a
on names.names_id=a.names_id
left join party on cases.casenum=party.case_id
where names.person='Y' and date_opened>=today()-6 and party.our_client='Y' and party.role='Plaintiff'
我尝试过这样的事情(当然不起作用):
select * from cases inner join names on cases.referred_link=names.names_id
left join (select * from mailing_list_defined where mailing_list='Mattar Stars') a
on names.names_id=a.names_id
left join party on cases.casenum=party.case_id
where names.person='Y' and date_opened>=today()-6 and party.our_client='Y' and party.role='Plaintiff'
and names_id IN (SELECT cases.referred_link, count(*)
FROM CASES
GROUP BY referred_link
HAVING COUNT(*) >= 3)
任何人都可以为我指出如何实现这一目标的正确方向吗?
当您在 IN(...) 之间放置子查询时,您必须确保它只返回一列。通过您的其他查询,似乎cases.referred_link实际上已经是names_id,所以您已经差不多了。您需要做的就是从选定列的列表中删除额外的计数(*)。
那么如果你使用一个简单的 会发生什么
JOIN
呢?该JOIN
条件很可能是错误的,因为我不知道哪些列链接了 2 个查询。