【问题标题】:Sqlite3, SELECT QuerySqlite3,选择查询
【发布时间】:2021-07-06 16:44:09
【问题描述】:

我的桌子看起来像这样:

index ID Name Value
1 1 x NULL
2 1 y NULL
3 1 z 123
4 2 x 456
5 2 y NULL
6 2 z 789
7 3 x 1011
8 3 y NULL
9 3 z NULL
.. .. .. ..

所以我的目标是只选择名称为 'z' 而不是 NULL 的值。第二个条件是与名称'x'和'y'对应的值是NULL。在上表中,这只是 Rowindex 为“3”的值。我是 sqlite3 的新手,如果有人可以帮助我,我会很高兴。

大卫

【问题讨论】:

    标签: sqlite select conditional-statements


    【解决方案1】:

    您可以在WHERE 子句中使用相关子查询,当Name'x''y' 时,它会检查Name 对应ID 的最大值:

    SELECT t1.*
    FROM tablename t1
    WHERE t1.Name = 'z'
      AND (
        SELECT MAX(t2.Value) 
        FROM tablename t2 
        WHERE t2.ID = t1.ID AND t2.Name IN ('x', 'y')
      ) IS NULL
    

    或者,NOT EXISTS:

    SELECT t1.*
    FROM tablename t1
    WHERE t1.Name = 'z'
      AND NOT EXISTS (
        SELECT 1
        FROM tablename t2 
        WHERE t2.ID = t1.ID AND t2.Name IN ('x', 'y') AND t2.Value IS NOT NULL
      ) 
    

    请参阅demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      相关资源
      最近更新 更多