我需要单个查询才能在mysql中执行此函数
select * from 'users' where user_name like 'account'
如果没有名称为account
的用户出现,那么我必须使用第二个查询,否则我可以使用第一个查询。
select * from 'users' where user_name like 'manager'
有没有办法将其优化为单个查询?感谢
答案 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');