2013-11-22 53 views
1

我試試這個:phpPgAdmin的選擇(MAX(從(SELECT COUNT(*)爲num ... NUM))作爲計數)

SELECT x.name 
FROM s x 
WHERE (SELECT MAX(num) 
     FROM ((SELECT COUNT(*) AS num 
       FROM spj 
     WHERE n_post=x.n_post)>0) AS adf) 

錯誤消息:

ERROR: syntax error at or near ">

LINE 2: ...CT count(*) as num from spj where n_post=x.n_post)>0) as adf...

然後我試試這個:

SELECT x.name 
FROM s x 
WHERE (SELECT MAX(num) 
     FROM ((SELECT COUNT(*) AS num 
       FROM spj 
       WHERE n_post=x.n_post)) AS adf) 

錯誤消息:

ERROR: argument of WHERE must be type boolean, not type bigint LINE 2: where (select max(num) from ((SELECT count(*) as num from sp..

出了什麼問題?請幫幫我。

Thx。我的代碼:

SELECT x.name 
FROM s x 
WHERE (SELECT MAX(num) 
     FROM (SELECT COUNT(*) AS num 
       FROM spj 
     WHERE x.n_post=n_post) AS adf)>0 

我需要n_post,這在表SPJ的最大條目數,但我不知道該怎麼做。

+0

目前還不清楚你想用這個查詢來做什麼。如果你需要'adf'值,你應該在SELECT列表中而不是在WHERE中定義它。 – valex

+1

您最內層的子查詢將始終返回恰好一個值。取最大值的好處是什麼? – hvd

回答

0

如果您需要n_post,它具有表spj中的最大條目數嘗試使用此查詢。這是MySQL查詢,它使用LIMIT關鍵字。如果您使用MsSQL,則使用SELECT TOP 1而不是LIMIT 1

SELECT x.name 
FROM s x 
JOIN (SELECT n_post,COUNT(*) AS num FROM spj GROUP BY n_post) as y 
    on x.n_post=y.n_post 
ORDER BY y.num DESC 
LIMIT 1