2016-06-17 2 views
2

아래 쿼리를 사용하여 나열된 4 개 열이 포함 된 테이블을 나열했습니다. 그러나 테이블을 반환하지 않습니다.나열된 모든 열이있는 경우에만 테이블을 나열합니다 - MySQL

SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME = 'moduleid' 
     AND COLUMN_NAME = 'userroleid' 
     AND COLUMN_NAME = 'sortorder' 
     AND COLUMN_NAME = 'setdefault' 
     AND TABLE_SCHEMA='db_name' 

어디에서 단 하나의 열을 사용하면 테이블을 반환합니다. 4 열 모두를 가진 테이블을 알아야합니다.

답변

3

이것은 가장 우아한 해결책은 아니지만 작동해야합니다.

SELECT DISTINCT c1.TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS c1 
JOIN INFORMATION_SCHEMA.COLUMNS c2 on c1.TABLE_NAME = c2.TABLE_NAME 
JOIN INFORMATION_SCHEMA.COLUMNS c3 on c1.TABLE_NAME = c3.TABLE_NAME 
JOIN INFORMATION_SCHEMA.COLUMNS c4 on c1.TABLE_NAME = c4.TABLE_NAME 
WHERE c1.COLUMN_NAME = 'moduleid' 
    AND c2.COLUMN_NAME = 'userroleid' 
    AND c3.COLUMN_NAME = 'sortorder' 
    AND c4.COLUMN_NAME = 'setdefault' 
    AND c1.TABLE_SCHEMA='db_name' 
3

당신이 1 추가 열 당 가입을 수행하지 않으려면

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME IN ('moduleid', 
         'userroleid', 
         'sortorder', 
         'setdefault') 
    AND TABLE_SCHEMA='db_name' 
GROUP BY TABLE_NAME 
HAVING COUNT(*) = 4 
관련 문제