不要问什么,但我需要一个SQL查询中的两个表。
喜欢这个......
Select Abc, Dgf from A
,结果是两个表
abc
1
1
1
dgf
2
2
2
更多细节? 好的,试试吧。
现在我喜欢这样:
SELECT a.* from ActivityView as a with (nolock)
where a.WorkplaceGuid = @WorkplaceGuid
SELECT b.* from ActivityView as a with (nolock)
left join PersonView as b with (nolock) on a.PersonGuid=b.PersonGuid where a.WorkplaceGuid = @WorkplaceGuid
很酷。但执行时间约为22秒。我这样做是因为在我的程序中我有自动从记录集中获取数据的类。班级活动和班级人员。这就是为什么我不能在一个记录集中创建它。程序没有解析它。
答案 0 :(得分:3)
您可以编写一个包含两个SELECT的存储过程。
SELECT Abc FROM A AS AbcTable;
SELECT Dgf FROM A AS DfgTable;
根据您的具体要求,我会考虑提交两个单独的查询。我认为合并它们没有任何好处。
答案 1 :(得分:0)
SQL Server
支持遗留COMPUTE BY
子句,其行为几乎与GROUP BY
相同但返回多个结果集(构成每个组的结果集后跟带有聚合的结果集):
WITH q AS
(
SELECT 1 AS id
UNION ALL
SELECT 2 AS id
)
SELECT *
FROM q
ORDER BY
id
COMPUTE COUNT(id)
BY id
然而,这已经过时,将来的版本将被删除。
答案 2 :(得分:0)
那些似乎不是过于复杂的查询(虽然select *通常不应该在生产中使用,并且从不在你进行连接时,因为它不必要地浪费资源发送连接字段的值两次)。因此,如果它需要22秒,那么要么返回大量数据,要么没有正确的索引。
您是否看过执行计划以查看导致缓慢的原因?