4

我需要单个查询来在 mysql 中执行此功能

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

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

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

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

4

4 回答 4

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')
于 2012-05-04T14:03:10.083 回答
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,我认为它应该是,实际上。这将有助于了解如何定义表以正确设计查询。

于 2012-05-04T20:54:07.860 回答
0

只是一个想法,你怎么做

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

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

于 2012-05-04T14:00:31.690 回答
0

我认为你应该能够IF在你的WHERE子句中使用一个语句:

SELECT * FROM `users` 
WHERE user_name LIKE 
IF((SELECT COUNT(*) 
    FROM `users` 
    WHERE name = 'account'
   ) > 0,'account','manager');
于 2012-05-04T14:01:18.120 回答