如何在sqlite中使用别名进行算术运算

问题描述 投票:0回答:1

我想用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;

该示例的表数据:

表专辑

albums

桌子轨道

tracks

sqlite alias arithmetic-expressions
1个回答
1
投票

你甚至不需要子查询:

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别名。这是不允许的,因为别名可能还没有计算过。但是,我建议使用上面给出的答案。

© www.soinside.com 2019 - 2024. All rights reserved.