SQLite如何在已有表中添加新列

oxosxuxt  于 2022-12-23  发布在  SQLite
关注(0)|答案(1)|浏览(238)

我正在做谷歌分析认证。我有一个问题,我更喜欢用SQL解决。
我计算了这里的路程。

SELECT
    ride_id,
    round((julianday(ended_at) - julianday(started_at)) * 1440) as ride_length
FROM
    all_divvy_tripdata

我想将ride_length联接回'all_divvy_tripdata'表中。同时,ride_id必须匹配。
我能做什么呢?我已经试了一天了,还是想不通。
我已经厌倦了“insert into”,但它只会向表中添加更多行

z8dt9xmd

z8dt9xmd1#

我建议实际上 * 不要 * 将这个派生结果存储在原始表中。这是因为如果底层数据发生变化,计算可能会无效,并且必须重新计算。我建议在这里使用生成的列:

CREATE TABLE all_divvy_tripdata (
    ride_id INTEGER PRIMARY KEY,
    started_at TEXT,
    ended_at TEXT,
    ride_length INT GENERATED ALWAYS AS (round(1440*(julianday(ended_at) - julianday(started_at)))) VIRTUAL,
    -- other columns here
 );

如果您真的想持久化ride_length,则必须创建一个新列,然后更新:

UPDATE all_divvy_tripdata
SET ride_length = round(1440*(julianday(ended_at) - julianday(started_at)));

相关问题