我有一个这样的查询并使用 infobright 数据库——
select field1, field2
from foo
where filed1 in (1,2,3)
即使表中没有记录,我也想要返回一些东西。例如,有字段 1 = 2 和字段 1 = 2 的记录,但字段 1 = 3 不存在任何记录。
如何进行此查询,以便从表中返回 field1 = 3 的内容?如果字段1 = 3 的表中有一个空值,我可以使用ifnull,但是如果绝对不存在任何内容,我正在尝试查找。
我有一个这样的查询并使用 infobright 数据库——
select field1, field2
from foo
where filed1 in (1,2,3)
即使表中没有记录,我也想要返回一些东西。例如,有字段 1 = 2 和字段 1 = 2 的记录,但字段 1 = 3 不存在任何记录。
如何进行此查询,以便从表中返回 field1 = 3 的内容?如果字段1 = 3 的表中有一个空值,我可以使用ifnull,但是如果绝对不存在任何内容,我正在尝试查找。
如果 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
虽然这是您想要的 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