我有一张这样的表:
projectName | info
--------------------
all | i1
all | i2
all | i3
name1 | i4
name1 | i5
all | i6
我有一个检查项目名称的查询。如果它存在于表中,我只需选择有关该特定项目的信息。如果它不存在,我必须获取所有'全部'项目
例如,如果我输入的是' name1',我的输出应为:
i4
i5
如果我的输入是' name2',我的输出应为:
i1
i2
i3
i6
我有没有办法在mysql查询中执行此操作?我找了一些例子,但我发现的一切都是从两个不同的表中检索信息。
答案 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')
答案 1 :(得分:3)
select * from projects
where projectName = case when exists (select * from projects where projectName = 'name1')
then 'name1'
else 'all'
end