2017-06-27 67 views
0

我目前正在试图总结一个MySQL语句的结果,它给了我几个不同的表的行数。SQL查询SUM从SELECT COUNT语句与UNION的表格

我已经研究了关于这个问题的每一个stackoverflow的解决方案。不幸的是,我无法弄清楚我的案例的正确语法。

我的结果工作陈述概括:

SET @shipmentId=456; 
SELECT 
     (SELECT COUNT(*) FROM Table1 WHERE ShipmentID = @shipmentId) 
     UNION ALL 
     (SELECT COUNT(*) FROM Table2 WHERE ShipmentID = @shipmentId) 
     UNION ALL 
     (SELECT COUNT(*) FROM Table3 WHERE ShipmentID = @shipmentId) 
     UNION ALL 
     (SELECT COUNT(*)FROM Table4 WHERE ShipmentID = @shipmentId) 
     UNION ALL 
     (SELECT COUNT(*)FROM Table5 WHERE ShipmentID = @shipmentId); 

在我看来,这应该是最近的一个正确的解决办法,但我不知道(试过很多变种):

SET @shipmentId=456; 
SELECT SUM(MeasuredValues) FROM 
    SELECT(
     (SELECT COUNT(*) FROM Table1 WHERE ShipmentID = @shipmentId) AS MeasuredValues 
     UNION ALL 
     (SELECT COUNT(*) FROM Table2 WHERE ShipmentID = @shipmentId) AS MeasuredValues 
     UNION ALL 
     (SELECT COUNT(*) FROM Table3 WHERE ShipmentID = @shipmentId) AS MeasuredValues 
     UNION ALL 
     (SELECT COUNT(*)FROM Table4 WHERE ShipmentID = @shipmentId) AS MeasuredValues 
     UNION ALL 
     (SELECT COUNT(*)FROM Table5 WHERE ShipmentID = @shipmentId) AS MeasuredValues) t1;  

在此先感谢您的帮助。

已经尝试过以下链接: StackOverFlow Solution1

StackOverFlow Solution2

回答

1

你可以只是简单总结一下你的选择:

SET @shipmentId=456; 
SELECT 
    (SELECT COUNT(*) FROM Table1 WHERE ShipmentID = @shipmentId) 
+ 
    (SELECT COUNT(*) FROM Table2 WHERE ShipmentID = @shipmentId) 
+ 
    (SELECT COUNT(*) FROM Table3 WHERE ShipmentID = @shipmentId) 
+ 
    (SELECT COUNT(*) FROM Table4 WHERE ShipmentID = @shipmentId) 
+ 
    (SELECT COUNT(*) FROM Table5 WHERE ShipmentID = @shipmentId); 
+0

上解决了我的SQL语法战斗非常感谢! –