当没有记录时返回一些东西,infobright db

时间:2014-08-31 12:33:14

标签: mysql sql infobright

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

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

即使表格中没有记录,我也想要回报。例如,有一个记录为filed1 = 2 并且提交1 = 2但是对于提交1 = 3则不存在。

我怎样才能进行此查询,以便从table1 = 3的表中返回一些内容? 我可以使用ifnull,以防在field1 = 3的表中有一个空值,但我正在尝试找到,如果绝对没有任何存在。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

虽然这是您想要的ID值的简短列表,但您可以创建一个select / union来创建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