2014-01-21 46 views
0

我想計算用戶在我的門戶網站中的排名...我加入用戶名從user_table_namerank_table和計算那裏動態如果我運行查詢獨立運行良好,但是當我用它一起有一個#1241錯誤 這裏是mycode的mysql內部加入和動態等級計算錯誤#1241

SELECT (SELECT utn.name, rt.amount_left, rt.loan_amount, rt.currency_amount, 
       rt.stock_amount, rt.fd_amount, rt.user_money 
     FROM `user_table_name` AS utn INNER JOIN 
      `rank_table` AS rt on rt.user_id=utn.userid 
     ) AS ut, 
     (SELECT COUNT(*) 
     FROM rank_table ui 
     WHERE (ui.amount_left) >= (uo.amount_left) 
     ) AS rank 
FROM rank_table uo 
WHERE 1 
ORDER BY rank ASC 

感謝戈登下面查詢

SELECT utn.name, rt.amount_left, rt.loan_amount, rt.currency_amount, 
    rt.stock_amount, rt.fd_amount, rt.user_money, 
    (SELECT COUNT(*) 
    FROM rank_table ui 
    WHERE (ui.amount_left) >= (rt.amount_left) 
    ) AS rank 
FROM `user_table_name` utn INNER JOIN 
`rank_table` rt 
    on rt.user_id = utn.userid 
ORDER BY rank ASC; 

但 查詢給了我偉rd的結果,如10和11位用戶有相同的點,那麼排名顯示爲11而不是10 ..因此,您可以請幫助

回答

2

的子查詢只能返回一列。不是其中一堆。我想你想是這樣的:

SELECT utn.name, rt.amount_left, rt.loan_amount, rt.currency_amount, 
     rt.stock_amount, rt.fd_amount, rt.user_money, 
     (SELECT COUNT(*) 
     FROM rank_table ui 
     WHERE (ui.amount_left) >= (rt.amount_left) 
     ) AS rank 
FROM `user_table_name` utn INNER JOIN 
    `rank_table` rt 
     on rt.user_id = utn.userid 
ORDER BY rank ASC; 
+0

感謝您的幫助隊友 –

+0

上面的查詢給了我怪異的結果,例如,如果10和11位用戶具有相同點,則有秩顯示爲11而不是10 ..所以你可以請幫忙 –

+0

@AnkitLadhania。 。 。將'> ='更改爲'>',將「count(*)」更改爲「count(*)+1」。 –