[英]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.