2010-02-10 4 views
1

주어진 권한을 모두 가지고있는 권한 테이블에서 사용자 (userid)를 찾고 싶습니다. 다음과 같음 :주어진 권한을 모두 가진 사용자를 찾기위한 MySQL 쿼리

userid를 선택하십시오. 권한 ('보기', '삭제', '추가', '편집')의 all_of 사용 권한;

참고 : 이 쿼리는 mysql 권한과 관련이 없습니다. 내가 다음 필드를 & 데이터가있는 user_permissions 테이블이 있다고 가정, 일반적인 질문 :


userid | permission
1 | view
1 | add
2 | view
2 | delete
2 | add
2 | edit
내가 부탁 해요 쿼리가 반환해야합니다을

사용자 ID
2

하세요 이것이 명확하지 않은 경우 알려주십시오.

SELECT * FROM information_schema.user_privileges 
WHERE grantee = '\'root\'@\'localhost\'' 

또는

SHOW GRANTS FOR 'root'@'localhost'; 

답변

0
select userid, GROUP_CONCAT(DISTINCT permissions ORDER BY permissions DESC) as permissions_grouped from permissions where permissions in ('view', 'delete', 'add', 'edit') GROUP BY userid HAVING permissions_grouped = "view,edit,delete,add"; 

thise에 미리

덕분에

+0

효과가있었습니다. 나는 group_concat을 몰랐다. 신속한 대응에 감사드립니다. – CodeTweetie

+0

group_concat은 특히 HAVING 절과 결합 할 때 매우 좋습니다. 그것은 당신이 :-) 하위 선택이 필요하다고 생각했던 것들을 할 수있게 해줍니다. –

1

봐 먼저 CONCAT 모든 후 이러한 권한 중 하나를 가지고 모든 사용자를 얻을 것이다 순서가 지정된 문자열에 대한 사용 권한의 경우 해당 문자열은 올바른 문자열이있는 행만 선택합니다.

편집 :

+0

감사합니다. 이 쿼리는 mysql 권한과 관련이 없습니다. 다음 필드 & 데이터가있는 user_permissions 테이블을 가지고 있다고 가정하면 일반적인 질문입니다. userid | 허가 1 | 보기 1 | 추가 2 | 보기 2 | 삭제 2 | 추가 2 | 을 편집 내가 부탁 해요 쿼리는 이 명확하지 않은 경우 알려 주시기 바랍니다 사용자 ID 반환해야합니다. 다시 한번 감사드립니다. – CodeTweetie

0

당신은 또한 다음과 같이 할 수있는 서식 : 응답에 대한

SHOW GRANTS FOR CURRENT_USER; 
+1

그러나 주어진 허가를받은 모든 사용자가 아니라 현재의 모든 사용자의 권한을 보여줄 수 있습니까? – andrewsi

관련 문제