sql >> Databasteknik >  >> RDS >> Mysql

MySql väljer standardvärde om det inte finns några resultat?

Jag är inte säker på varför du inkluderar comment_id i din SELECT-lista om du bara vill ha användare och deras rankningar. Vill du bara ha deras rankning på just den kommentaren? Jag ska ge en lösning för nu som förutsätter att du bara vill ha en fullständig medlemslista med rankningar:

SELECT
    M.member_id,
    M.user_id,
    M.avatar,
    COALESCE(SUM(C.vote_value), 0) AS vote_value_sum,
    COALESCE(SUM(C.best), 0) AS best_sum,
    COALESCE(SUM(C.vote_value), 0) + SUM(C.best) * 10 AS total_value
FROM
    Members M
LEFT OUTER JOIN Comments C ON
    C.author_id = M.member_id
GROUP BY
    M.member_id
ORDER BY
    total_value DESC
LIMIT 0, 20

(detta förutsätter att vote_value och best INTE är NULL-kolumner eller att MySQL kommer att bortse från dem vid beräkning av SUM-värden - jag tror att det gör det, men jag har inte testat det)



  1. LIKE-fråga på element i platt jsonb-array

  2. Datum i en URL dd/mm/åååå

  3. Hur man hittar dubbletter av poster i MySQL

  4. Trunkera alla tabeller i en databas i SQL Server - SQL Server / TSQL Tutorial Del 55