我想用sqlite中的别名计算(示例是从http://www.sqlitetutorial.net修改的):
如果我这样做,我收到错误消息“没有这样的列:tracks_count”
SELECT albumid,
title,
(
SELECT count(trackid)
FROM tracks
WHERE tracks.AlbumId = albums.AlbumId
)
tracks_count, tracks_count * album_nr
FROM albums
ORDER BY tracks_count DESC;
如果我这样做,我得到零乘法
SELECT albumid,
title,
(
SELECT count(trackid)
FROM tracks
WHERE tracks.AlbumId = albums.AlbumId
)
tracks_count, "tracks_count" * album_nr
FROM albums
ORDER BY tracks_count DESC;
该示例的表数据:
表专辑
桌子轨道
你甚至不需要子查询:
SELECT
a.albumid,
a.title,
COUNT(t.albumid) AS tracks_count,
COUNT(t.albumid) * a.album_nr AS other_count
FROM albums a
LEFT JOIN tracks t
ON a.albumid = t.albumid
GROUP BY
a.albumid,
a.title;
如果你想让你当前的方法工作,那么你遇到的问题是你在同一个select中定义了tracks_count
别名。这是不允许的,因为别名可能还没有计算过。但是,我建议使用上面给出的答案。