0

因此,我使用 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

4 回答 4

4

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

SELECT COUNT(*) AS NoOfTweets

更多关于列别名

于 2013-03-30T23:23:25.117 回答
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)
于 2013-03-30T23:24:19.333 回答
3

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

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

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

于 2013-03-30T23:24:30.810 回答
1

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

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

很好的 MySQL 给出解释 - 我在 SQLFiddle 上尝试了 MS SQL 并得到了Incorrect syntax near ')'.这没什么帮助!

因此,您的“NoOfTweets”是赋予结果列的名称,也是赋予 SQL 引擎所需但可能是不同名称的“派生表”的名称……它不会在结果中返回。命名派生表的目的是为了以防您希望 JOIN 到其他表并引用连接中的字段。

于 2013-03-30T23:52:38.353 回答