mysql でこの関数を実行するには、単一のクエリが必要です
select * from 'users' where user_name like 'account'
名前を持つユーザーが存在しない場合account
は、2 番目のクエリを使用する必要があります。それ以外の場合は、最初のクエリを使用できます。
select * from 'users' where user_name like 'manager'
これを単一のクエリに最適化する方法はありますか? ありがとう
mysql でこの関数を実行するには、単一のクエリが必要です
select * from 'users' where user_name like 'account'
名前を持つユーザーが存在しない場合account
は、2 番目のクエリを使用する必要があります。それ以外の場合は、最初のクエリを使用できます。
select * from 'users' where user_name like 'manager'
これを単一のクエリに最適化する方法はありますか? ありがとう
このようなものが動作するはずです
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')
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
ません。実際、一意である必要があると思いました。クエリを適切に設計するには、テーブルがどのように定義されているかを知っておくと役立ちます。
ほんの一案です、いかがですか
select *
from 'users'
where user_name like 'account' or user_name like 'manager'
order by user_name
最初のアカウントを確認するよりも、='account' の場合は、データセットからすべてのマネージャーを削除します。マネージャーの場合は、データセットがあります
句でIF
ステートメントを使用できるはずだと思います:WHERE
SELECT * FROM `users`
WHERE user_name LIKE
IF((SELECT COUNT(*)
FROM `users`
WHERE name = 'account'
) > 0,'account','manager');