【问题标题】:sqlite : query additional columns with compound selectsqlite :使用复合选择查询其他列
【发布时间】:2011-02-04 20:58:12
【问题描述】:

我有一个包含这些列的表:

| name | city | time | version |

我使用此查询来查找两个版本之间具有新地址的所有行:

select name, city from adresses where version = 2 
except 
select name, city from adresses where version = 1

它正在工作,但我也想检索时间值,但每个版本之间的时间值会发生变化。

我想要这样的东西:

NOT WORKING
select time from adresses where version = 2 and 
(select name, city from adresses where version = 1 
except select name, city from adresses where version = 2);

有人知道我该怎么做吗?

谢谢

【问题讨论】:

    标签: sql sqlite select


    【解决方案1】:

    不确定我是否正确理解了您的问题,但根据您编写的查询,我认为这是您真正想要的:

    SELECT time FROM adresses a
    INNER JOIN (
       select name, city from adresses where version = 1 
       except 
       select name, city from adresses where version = 2
    ) new ON new.name = a.name AND new.city = a.city
    WHERE version = 2
    

    如果您正在寻找记录的两个版本之间的时差(这也是您在问题中提到的),那么您可以执行以下操作:

    SELECT a2.*, a2.time - a1.time as time_diff
    FROM adresses a1
    INNER JOIN adresses a2 ON a1.name = a2.name AND a1.city = a2.city
    WHERE a1.version = 1 AND a2.version = 2
    

    【讨论】:

    • 嗨。非常感谢。这是我想要的第一个查询 :-)
    猜你喜欢
    • 2013-12-15
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多