集成多个查询条件

时间:2012-05-04 13:53:45

标签: mysql

我需要单个查询才能在mysql中执行此函数

select * from 'users' where user_name like 'account'

如果没有名称为account的用户出现,那么我必须使用第二个查询,否则我可以使用第一个查询。

select * from 'users' where user_name like 'manager'

有没有办法将其优化为单个查询?感谢

4 个答案:

答案 0 :(得分:2)

这样的事情应该有效

Select IF ((Select count(*) from 'users' where user_name like 'account')>0,
select * from 'users' where user_name like 'account',
select * from 'users' where user_name like 'manager')

答案 1 :(得分:1)

SELECT m.*
  FROM users m
  LEFT JOIN users a ON a.user_name = 'account'
 WHERE m.user_name = coalesce(a.user_name, 'manager');

如果user_name不是唯一的话,它将无法正常工作,我认为它应该是,实际上。了解如何定义表以正确设计查询将有所帮助。

答案 2 :(得分:0)

只是一个想法,你怎么做

select * 
from 'users' 
where user_name like 'account' or  user_name like 'manager' 
order by   user_name

比检查第一个帐户,如果是''帐户',则删除数据集中的所有管理员。如果是经理,那么你有数据集

答案 3 :(得分:0)

我认为您应该可以在IF子句中使用WHERE语句:

SELECT * FROM `users` 
WHERE user_name LIKE 
IF((SELECT COUNT(*) 
    FROM `users` 
    WHERE name = 'account'
   ) > 0,'account','manager');