4

mysql でこの関数を実行するには、単一のクエリが必要です

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

名前を持つユーザーが存在しない場合accountは、2 番目のクエリを使用する必要があります。それ以外の場合は、最初のクエリを使用できます。

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 に答える