簡體   English   中英

使用SUM和順序進行MySQL查詢

[英]MySQL query with SUM and order

我的查詢出了什么問題? 有人可以幫我嗎?

我收到此錯誤消息

“'order子句'中的未知列'wp_gdsr_data_article。(SUM(user_voters)+ SUM(visitor_voters))'”

但是' wp_gdsr_data_article '列存在

    SELECT *
    FROM `wp_posts`
    INNER JOIN wp_term_relationships ON wp_term_relationships.object_id = ID AND wp_term_relationships.term_taxonomy_id = 1
    INNER JOIN wp_gdsr_data_article ON post_id = ID
    WHERE `post_status` = 'publish'
    AND `post_type` = 'post'
    ORDER BY `wp_gdsr_data_article`.`(SUM(user_voters)+SUM(visitor_voters))` DESC
    LIMIT 1 , 30

您在ORDER子句中使用的表達式不是表的列。
因此,您不能在表達式的結果上使用表標識符。

錯了

ORDER BY `wp_gdsr_data_article`.`(SUM(user_voters)+SUM(visitor_voters))` DESC

更改為:

ORDER BY (SUM(user_voters)+SUM(visitor_voters)) DESC

而且,您不能像這樣在ORDER BY子句中直接使用任何聚合函數。
分別計算SUM...部分,然后在ORDER BY使用。

SELECT * from (
    SELECT *, (SUM(user_voters)+SUM(visitor_voters)) total
    FROM `wp_posts`
    INNER JOIN wp_term_relationships 
            ON wp_term_relationships.object_id = ID 
               AND wp_term_relationships.term_taxonomy_id = 1
    INNER JOIN wp_gdsr_data_article 
            ON post_id = ID
    WHERE `post_status` = 'publish'
      AND `post_type` = 'post'
    LIMIT 1 , 30
) results
ORDER BY total

請參閱如何在MySQL中按SUM()進行訂購?

刪除語句中所有列和表名的引號。 除了按部分訂購應該基於我們語句中的列或評估值之外,使用方式也是錯誤的。 您需要先評估在按順序使用部分中使用的零件,然后再將其用於按順序排列,這是這樣的(未經測試):

SELECT (SUM(wp_gdsr_data_article.user_voters)+SUM(wp_gdsr_data_article.visitor_voters) as total_voters), *
FROM wp_posts 
  INNER JOIN wp_term_relationships 
     ON wp_term_relationships.object_id = ID 
       AND wp_term_relationships.term_taxonomy_id = 1
  INNER JOIN wp_gdsr_data_article 
     ON post_id = ID
WHERE post_status = 'publish' AND post_type = 'post'
ORDER BY total_voters DESC
LIMIT 1 , 30

嘗試這個

SELECT *, (SUM(wp_gdsr_data_article.user_voters)+SUM(wp_gdsr_data_article.visitor_voters)) AS someSum
FROM `wp_posts`
INNER JOIN wp_term_relationships ON wp_term_relationships.object_id = ID AND wp_term_relationships.term_taxonomy_id = 1
INNER JOIN wp_gdsr_data_article ON post_id = ID
WHERE `post_status` = 'publish'
AND `post_type` = 'post'
ORDER BY someSum DESC
LIMIT 1 , 30

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM