2013-03-30 37 views
0

所以我使用UNION將3個查詢結合在一起,並希望統計結果中的行數,但有點奇怪。它實際上工作,並給出了正確的答案,但它不正確地分配「AS」部分。因爲沒有使用COUNT(*)和UNION

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"; 

謝謝你們:)

+1

嗯,如果你說選擇計數(*)作爲NoOfTweets?只是猜測在這裏 – Coffee

+0

所以從其他帖子我讀了,當你做UNIONs時,AS NoOfTweets最後會去(例如這裏:http://stackoverflow.com/questions/11943748/mysql-select-count-union),它didn在計數之後不會與AS NoOfTweets一起工作,但如果我在這裏都有,那麼它確實有效 - 非常奇怪,但非常感謝很多人! :) – user2228189

回答

4

你是不是把它在正確的位置。您查詢的開始應該是這樣的:

SELECT COUNT(*) AS NoOfTweets

More on Column Alias

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) 
3

你有你指望該項目後,究竟用AS

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

另外要注意的是,你已經接近尾聲了"。或者,也許它來自一個更長的字符串。

+0

是的,「來自別的東西。 – user2228189

1

的錯誤是Every derived table must have its own alias這是一件好事,我不知道,所以感謝教育:)

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

的MySQL的尼斯作出解釋 - 我試着用MS SQL上SQLFiddle和公正得到了Incorrect syntax near ')'.這不是那麼有用!

因此,您的'NoOfTweets'是賦予結果列的名稱,也是SQL引擎需要的「派生表」,但可能是不同的名稱......它不會返回結果中。命名派生表的重點在於,如果您希望加入其他表並引用連接中的字段。