2016-04-29 23 views
1

我是SQL新手,並且作爲培訓,我只是想與堆棧交換數據資源管理器一起玩,我想知道爲什麼下面的代碼不會「T工作:爲什麼我不能在SQL中使用選擇表作爲輸入

SELECT count(*) 
FROM (SELECT id 
     FROM Posts 
     WHERE PostTypeId = 2 AND OwnerUserId = '##UserId##') 

我的主要目標是找到用戶,他們的答案是1000多,但知道了,我想不通的是代碼的問題是什麼,爲什麼我沒有得到一個用戶的答案的數量...

+0

只需添加「AS foobar」廣告宣告結束,它應該起作用。 sql語句要求你爲在子查詢 – Webeng

+0

@Webeng tnx man中創建的新表設置一個別名,我得到我的答案;) –

回答

2

做一個GROUP BY。使用HAVING與超過1000

select id 
from Posts 
group by id 
having count(*) > 1000 

也許你想在having子句中其他一些聚合函數,像sum(points) > 1000或類似的只返回的ID。

+0

tnx用於響應,但我認爲你的代碼不應該有AND的其餘部分,並且別的,當我在stackexchange服務器上運行ur代碼時,我什麼也沒有,你會再次檢查你的代碼嗎? –

+0

刪除了WHERE子句。 – jarlh

+0

錯誤得到修復,但我沒有得到任何結果 –

0

SELECT ID,COUNT(*)FROM 帖子 WHERE PostTypeId = 2 AND OwnerUserId = '## ##用戶ID';

2

您必須設置一個別名爲您的派生表:幫助我的朋友

select count(*) 
from (SELECT id 
    FROM Posts 
    WHERE PostTypeId = 2 AND OwnerUserId = '##UserId##') s 
+0

謝謝你的回答,現在你能告訴我如何引用's'表的列嗎? ??我想在新行中使用它...... –

+0

我不確定你的意思......'select s.id'也許? –

+0

親愛的我的朋友,我可以找到實現我的目標的方式,我張貼下面的代碼,謝謝你的幫助;) –

1

,我能勝任我的problem.the關鍵部分是SQL語句需要我們設置別名爲新表在子查詢中創建的。之後,我們可以利用這個別名的地方,我們希望,這個代碼將實現我的主要目標而努力:

select x.OwnerUserId 
from (select Posts.OwnerUserId,s.cnt 
     from Posts inner join (SELECT Posts.OwnerUserId, count(OwnerUserId)as cnt 
          FROM Posts 
          WHERE PostTypeId = 2 
          group by Posts.OwnerUserId) as s on Posts.OwnerUserId=s.OwnerUserId)as x 
where x.cnt>100 
group by x.OwnerUserId 

如果有人能找到它具有更好的性能更好的辦法,PLZ在這裏分享它;)

相關問題