如果存在特定值,则从表中选择记录,如果不存在,则选择其他记录

时间:2017-04-18 14:08:58

标签: mysql

我有一张这样的表:

projectName | info
--------------------
     all    | i1
     all    | i2
     all    | i3
     name1  | i4
     name1  | i5
     all    | i6

我有一个检查项目名称的查询。如果它存在于表中,我只需选择有关该特定项目的信息。如果它不存在,我必须获取所有'全部'项目

例如,如果我输入的是' name1',我的输出应为:

i4
i5

如果我的输入是' name2',我的输出应为:

i1
i2
i3
i6

我有没有办法在mysql查询中执行此操作?我找了一些例子,但我发现的一切都是从两个不同的表中检索信息。

2 个答案:

答案 0 :(得分:4)

一种方法是使用UNION ALL

SELECT info
FROM mytable
WHERE projectName = 'name1'

UNION ALL

SELECT info
FROM mytable
WHERE projectName = 'all' AND 
      NOT EXISTS (SELECT 1
                  FROM mytable
                  WHERE projectName = 'name1')

Demo here

答案 1 :(得分:3)

select * from projects
where projectName = case when exists (select * from projects where projectName = 'name1')
    then 'name1'
    else 'all'
end