AS不使用COUNT(*)和UNION

时间:2013-03-30 23:21:35

标签: mysql sql count union

所以我使用UNION一起加入了3个查询,想要计算结果中的行数,但这有点奇怪。它实际上有效,并给出正确的答案,但它没有正确分配“AS”部分。

SELECT COUNT(*) FROM (
(Long Select Statement)
UNION
(AnotherLong Select Statement)
UNION 
(Even Longer Select Statement)
) 
AS NoOfTweets";

结果是正确的,但不是将其分配给“NoOfTweets”,而是将其分配给“Count(*)”。如果我删除“AS NoOfTweets”它将停止工作。如果我删除一些括号,它将停止工作。经过漫长的一天后,我的想法很少!如果需要的话,我可以发布整个代码,但不是因为它很长,而且我认为这有效。

先谢谢你,杰克。

编辑:已修复:

SELECT COUNT(*) NoOfTweets FROM (
(Long Select Statement)
UNION
(AnotherLong Select Statement)
UNION 
(Even Longer Select Statement)
) 
AS NoOfTweets";

谢谢你们:)

4 个答案:

答案 0 :(得分:4)

您没有将它放在正确的位置。查询的开头应如下所示:

SELECT COUNT(*) AS NoOfTweets

More on Column Alias

答案 1 :(得分:3)

SELECT COUNT(*) NoOfTweets FROM 
(Long Select Statement)
UNION
(AnotherLong Select Statement)
UNION 
(Even Longer Select Statement)

SELECT COUNT(*) AS NoOfTweets FROM 
(Long Select Statement)
UNION
(AnotherLong Select Statement)
UNION 
(Even Longer Select Statement)

答案 2 :(得分:3)

您必须在您计算的项目之后使用AS

SELECT COUNT(*) AS `NoOfTweets`
FROM ( ... )

还要小心你接近尾声的"。或者它可能来自更长的字符串。

答案 3 :(得分:1)

错误是Every derived table must have its own alias这是我不知道的事情,所以感谢教育:)

http://sqlfiddle.com/#!9/d30f4/4

很高兴MySQL给出一个解释 - 我在SQLFiddle上尝试使用MS SQL,只是得到了Incorrect syntax near ')'.,这对我们没有帮助!

因此,您的'NoOfTweets'是结果列的名称,也是SQL引擎所需的'派生表',但可能是不同的名称......它不会在结果中返回。命名派生表的目的在于您希望加入其他表并引用连接中的字段。