Mysql 如何基于两个不同的列计算列?

Mysql 如何基于两个不同的列计算列?,mysql,sql,Mysql,Sql,我需要创建一个名为weight的列,该列的计算方法是将歌曲播放的总次数乘以歌曲播放的唯一次数。以下是我所拥有的: SELECT music_id, COUNT(*) as count, COUNT(distinct user_id) as unique_count, count * unique_count as weight FROM plays GROUP BY music_id ORDER BY weight DESC LIMIT 50 我一直收到一个错误“字段列表中的未知列‘co

我需要创建一个名为weight的列,该列的计算方法是将歌曲播放的总次数乘以歌曲播放的唯一次数。以下是我所拥有的:

SELECT music_id, 
COUNT(*) as count, 
COUNT(distinct user_id) as unique_count,
count * unique_count as weight

FROM plays GROUP BY music_id ORDER BY weight DESC LIMIT 50
我一直收到一个错误“字段列表中的未知列‘count’”,但当我删除“count+unique_count as weight”并改为按常规计数排序时,该函数会起作用。

您能试试吗

SELECT music_id, 
COUNT(*) as cnt, 
COUNT(distinct user_id) as unique_count,
COUNT(*) * COUNT(distinct user_id) as weight
FROM plays
GROUP BY music_id
ORDER BY weight DESC LIMIT 50

ALIAS
ed列名无法在同一级别中引用。e、 g

mysql> select name AS alias1, alias1 * 10 from test;
ERROR 1054 (42S22): Unknown column 'alias1' in 'field list'
mysql> select name AS alias1 from test where alias = '10';
ERROR 1054 (42S22): Unknown column 'alias' in 'where clause'

那没用。现在我得到错误“每个派生表都必须有自己的别名”@Kyle请稍等,我已经更新了。第一个对性能有好处。
mysql> select name AS alias1, alias1 * 10 from test;
ERROR 1054 (42S22): Unknown column 'alias1' in 'field list'
mysql> select name AS alias1 from test where alias = '10';
ERROR 1054 (42S22): Unknown column 'alias' in 'where clause'