2017-03-02 12 views
1

10個のカラムと20個のレコードを持つSQLテーブルがあります。列の1つにus_nameというユーザー名が含まれています。現在ログインしているユーザーごとにテーブル行をフィルタリングする必要があります。この目的のために、次のSQLコマンドを使用しています。ユーザがA,B,C,D、テーブル名がab_cdであるとします。Select where where then then else in SQL

SELECT * 
FROM ab_cd 
WHERE us_name = 'current_user' 

正常に動作しています。しかし、ユーザーDの場合、Dがスーパーユーザーであることを示す完全な表が必要です。私はこれのようなものが必要です。

IF Current_user = 'D' 
Then 
SELECT * 
FROM ab_cd 
Else 
SELECT * 
FROM ab_cd 
WHERE us_name = 'current_user' 

しかし、動作しません。誰も助けることができますか?

+1

SQL-ServerまたはMySQLの:もちろん

SELECT * FROM ab_cd WHERE @current_user = 'd' or us_name = @current_user 

、これはin演算子を使用して人手不足するだろうか?それは非常に異なるDBMSです – Jens

答えて

3

この動作をシミュレートするには、論理or演算子を使用できます。 @current_userは、ユーザ名を保持する変数であると仮定すると:

SELECT * 
FROM ab_cd 
WHERE @current_user IN ('d', us_name) 
+1

ありがとうございました。 – Vineet