涉及到一個權限的問題,部門編號(DepartmentCode)為'00104'時,這個部門是銷售部門。
銷售部門的員工在查看客戶時,只能看到自己的客戶。
比如User表的 '2 蔡XX caicai 00104',
查詢時的sql='select * from Company left join User on Company.UserID=User.id where 1=1 and User.DepartmentCode='00104' and User.id=2 '
而除了銷售部門的員工,都可以查看所有客戶,則不需要指定id
查詢時的sql='select * from Company left join User on Company.UserID=User.id where 1=1 ' and User.DepartmentCode!='00104'
我試了幾種方法:
1.(case when User.DepartmentCode='00104' then User.id=@UserId else User.id<>NULL end )
出現錯誤,then后不能User.id=@UserId
2.( User.DepartmentCode='00104' and User.id=@UserId) or (User.DepartmentCode!='00104' and User.id!=null)
查詢結果始終跳不到 or 后的(User.id!=null)
3. (User.id in (SELECT id FROM User WHERE DepartmentCode='00104' AND id=@UserId )) OR (User.id is not null)
這一段始終優先判斷(User.id is not null),輸入銷售部門的員工id也查詢出所有結果
4.
非要用SQL,那就用存盤程序
SELECT DepartmentCode INTO @DepartmentCode FROM User WHERE id=@UserId LIMIT 1;
IF @DepartmentCode = '00104' THEN
...
ELSE
...
END IF;
QAQ存盤程序我也想過了呢 ,但是我這邊只能填寫from后面的陳述句,條件十分有限
uj5u.com熱心網友回復:
select * from Company left join User on Company.UserID=User.id
where case when User.DepartmentCode='00104' then User.id=@UserId else 1=1 end
uj5u.com熱心網友回復:
select * from Company left join User on Company.UserID=User.id
where case when User.DepartmentCode='00104' then User.id=@UserId else 1=1 end
老哥,then 后,不是只能是回傳的內容,不能是判斷或者賦值嗎?then后不能這樣用=號吧
uj5u.com熱心網友回復:
SELECT * FROM Company,User where Company.UserID = User.id and User.id = 1 and if(User.DepartmentCode='00104',1=0,1=1);
看你的條件區分只有 and User.id=2 , 但是還是要先查詢者的部門,所以不知道條件要怎么做區分,我這邊大致上的寫法像上面,符合的時候追加條件 ,不符合的時候給1=1
**桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......
我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......
關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......