【问题标题】:Return somehting when no record exists, infobright db当不存在记录时返回一些东西,infobright db
【发布时间】:2014-08-31 12:33:14
【问题描述】:

我有一个这样的查询并使用 infobright 数据库 --

select field1, field2
from foo
where filed1 in (1,2,3)

即使表中没有记录,我也想要返回一些东西。例如,filed1 = 2 的记录 并且filed1 = 2,但filed1 = 3不存在。

如何进行此查询,以便从表中返回 field1 = 3 的内容? 如果字段1 = 3 的表中有一个空值,我可以使用ifnull,但是如果绝对不存在任何内容,我正在尝试查找。

【问题讨论】:

标签: mysql sql infobright


【解决方案1】:

虽然这是您想要的 ID 值的简短列表,但您可以创建一个选择/联合来创建 ID,然后左连接到数据表,例如

select
      AllIDs.ID,
      foo.field1,
      foo.field2
   from 
      ( select 1 ID union select 2 union select 3 ) as AllIDs
         left join foo
            on AllIDs.ID = foo.field1

【讨论】:

    【解决方案2】:

    如果 field1 是唯一的,您可以这样做:

    SELECT 
      ISNULL(MAX(field1), 'Default F1') as field1, 
      ISNULL(MAX(field2), 'Default F2') as field2
    FROM foo
    WHERE field1 in (1,2,3)
    GROUP by field1
    

    否则你可以像这样使用 UNION:

    SELECT field1, field2
    FROM foo
    WHERE filed1 in (1,2,3)
    UNION
    SELECT 'Default F1' as field1, 'Default F2' as field2
    WHERE (SELECT COUNT(*) FROM foo WHERE filed1 in (1,2,3)) = 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      相关资源
      最近更新 更多