SQL Server+“合并结果”

SQL Server+“合并结果”,sql,sql-server,Sql,Sql Server,我是以下查询的两个结果集,我想将结果“组合”到一个表中,但不确定如何从这里开始,请有人提供一些指导: SELECT userid, vehicleId, count(vehicleId) As SearchCount FROM MemberSearches GROUP BY userid, vehicleId ORDER BY count(vehicleId) DESC SELECT f.UserId, v.AutoId AS VehicleId, count(v.AutoId) AS S

我是以下查询的两个结果集,我想将结果“组合”到一个表中,但不确定如何从这里开始,请有人提供一些指导:

SELECT userid, vehicleId, count(vehicleId) As SearchCount FROM MemberSearches 
GROUP BY userid, vehicleId 
ORDER BY count(vehicleId) DESC

SELECT f.UserId, v.AutoId AS VehicleId, count(v.AutoId) AS SearchCount FROM Favorites f
LEFT JOIN [SellPost] sp
ON (f.PostId = sp.AutoId)
LEFT JOIN [Vehicle] v
ON (sp.CarId = v.AutoId)
GROUP BY f.UserId, v.AutoId
ORDER BY COUNT(v.AutoId) DESC
第一次选择的结果:

第二次选择的结果:

我需要实现以下最终结果:


没有效率,只是测试它的工作

   SELECT userid, vehicleId, SUM(SearchCount) As SearchCount
FROM
(SELECT userid, vehicleId, count(vehicleId) As SearchCount FROM MemberSearches 
GROUP BY userid, vehicleId 
UNION ALL
SELECT f.UserId, v.AutoId AS VehicleId, count(v.AutoId) AS SearchCount FROM Favorites f
LEFT JOIN [SellPost] sp
ON (f.PostId = sp.AutoId)
LEFT JOIN [Vehicle] v
ON (sp.CarId = v.AutoId)
GROUP BY f.UserId, v.AutoId
) t
GROUP BY userid, vehicleId

没有效率,只是测试它的工作

   SELECT userid, vehicleId, SUM(SearchCount) As SearchCount
FROM
(SELECT userid, vehicleId, count(vehicleId) As SearchCount FROM MemberSearches 
GROUP BY userid, vehicleId 
UNION ALL
SELECT f.UserId, v.AutoId AS VehicleId, count(v.AutoId) AS SearchCount FROM Favorites f
LEFT JOIN [SellPost] sp
ON (f.PostId = sp.AutoId)
LEFT JOIN [Vehicle] v
ON (sp.CarId = v.AutoId)
GROUP BY f.UserId, v.AutoId
) t
GROUP BY userid, vehicleId
你不能只在这里使用工会;考虑MauleLID 2,其中所需的结果是每个子查询中的行的总数。

您可以将两个结果合并在一起:

SELECT t1.userid, t2.vehicleId, SearchCount = t1.SearchCount + t2.SearchCount
FROM 
(
  SELECT userid, vehicleId, count(vehicleId) As SearchCount FROM MemberSearches 
  GROUP BY userid, vehicleId
) t1
INNER JOIN
(
  SELECT f.UserId, v.AutoId AS VehicleId, count(v.AutoId) AS SearchCount FROM Favorites f
  LEFT JOIN [SellPost] sp
  ON (f.PostId = sp.AutoId)
  LEFT JOIN [Vehicle] v
  ON (sp.CarId = v.AutoId)
  GROUP BY f.UserId, v.AutoId
) t2 on t1.userid = t2.userid and t1.vehicleid = t2.vehicleid
ORDER BY userid, vehicleid
根据数据的不同,您可能需要在此处使用左联接或完全联接

或者user@Serge还有另一种选择。

你不能在这里使用联合;考虑MauleLID 2,其中所需的结果是每个子查询中的行的总数。

SELECT
    userid, vehicleId, count(*) As SearchCount
FROM (
    SELECT userid, vehicleId FROM MemberSearches 

    UNION ALL

    SELECT f.UserId, v.AutoId FROM Favorites f
    LEFT JOIN [SellPost] sp
    ON (f.PostId = sp.AutoId)
    LEFT JOIN [Vehicle] v
    ON (sp.CarId = v.AutoId)
) AS X
GROUP BY userid, vehicleId 
ORDER BY 3 DESC
您可以将两个结果合并在一起:

SELECT t1.userid, t2.vehicleId, SearchCount = t1.SearchCount + t2.SearchCount
FROM 
(
  SELECT userid, vehicleId, count(vehicleId) As SearchCount FROM MemberSearches 
  GROUP BY userid, vehicleId
) t1
INNER JOIN
(
  SELECT f.UserId, v.AutoId AS VehicleId, count(v.AutoId) AS SearchCount FROM Favorites f
  LEFT JOIN [SellPost] sp
  ON (f.PostId = sp.AutoId)
  LEFT JOIN [Vehicle] v
  ON (sp.CarId = v.AutoId)
  GROUP BY f.UserId, v.AutoId
) t2 on t1.userid = t2.userid and t1.vehicleid = t2.vehicleid
ORDER BY userid, vehicleid
根据数据的不同,您可能需要在此处使用左联接或完全联接


或者user@Serge有另一种选择。

@user415795这个答案能给你预期的结果吗?谢谢大家,这实际上会产生预期的结果。@user415795这个答案能给你预期的结果吗?谢谢大家,这实际上会产生预期的结果。
SELECT
    userid, vehicleId, count(*) As SearchCount
FROM (
    SELECT userid, vehicleId FROM MemberSearches 

    UNION ALL

    SELECT f.UserId, v.AutoId FROM Favorites f
    LEFT JOIN [SellPost] sp
    ON (f.PostId = sp.AutoId)
    LEFT JOIN [Vehicle] v
    ON (sp.CarId = v.AutoId)
) AS X
GROUP BY userid, vehicleId 
ORDER BY 3 DESC