정수 집합이 다른 정수 집합의 부분 집합인지 확인
MySQL 5.5에서 사용할 수 있는 모든 기능을 포함하는 MariaDB 5.5를 사용하면 정수 집합이 다른 정수 집합의 하위 집합인지 어떻게 알 수 있습니까?
다른 프로그래밍 언어(데이터베이스가 아닌 언어)에서는 (Java 등)를 참조해 주세요.
Set<Integer> innerSet = new HashSet<>(Arrays.asList(1001, 1003));
Set<Integer> outerSet = new HashSet<>(Arrays.asList(1001, 1003, 1005));
return outerSet.containsAll(innerSet);
좀 더 비공식적인 표기법:
innerSet = {1001, 1003}
outerSet = {1001, 1003, 1005}
return (innerSet is-subset-of outerSet)
내부 세트 및 외부 세트 개념의 값은 하드 코딩되지 않습니다.
MariaDB 5.5를 사용하여 동일한 기능을 구현하려면 어떻게 해야 합니까?
pseudo-SQL의 예로서 다음과 같은 점에 주의해 주십시오.(..., ...)
또한 다음 중 하나의 열을 나타내기 위해 예약되어 있습니다.
SELECT {1001, 1003} SUBSET-OF {1001, 1003, 1005};
또는
SELECT IS_SUBSET_OF({1001, 1003}, {1001, 1003, 1005});
특별한 이유
SELECT (COUNT(tableA.column) = COUNT(tableB.column)) FROM tableA LEFT JOIN tableB ON tableA.column = tableB.column
안 된다고?그러나 데이터베이스 열에 두 세트가 모두 있어야 합니다.
테이블이 없다면, 내가 생각할 수 있는 한 가지 불쾌한 방법은 이렇게 하는 것이다.
SELECT (COUNT(tableA.a) = COUNT(tableB.b)) FROM ( SELECT 10 as a UNION SELECT 20 ) as tableA LEFT JOIN ( SELECT 10 as b UNION SELECT 20 UNION SELECT 30 ) as tableB ON tableA.a = tableB.b
이를 수행하려면 먼저 데이터를 임시 테이블에 넣은 다음 다음과 같이 쿼리를 수행합니다.
DROP TEMPORARY TABLE inner_set;
DROP TEMPORARY TABLE outer_set;
CREATE TEMPORARY TABLE inner_set
(value INT(11) NOT NULL, INDEX(value));
CREATE TEMPORARY TABLE outer_set
(value INT(11) NOT NULL, INDEX(value));
INSERT INTO inner_set (value) VALUES (1001), (1003);
INSERT INTO outer_set (value) VALUES (1001), (1003), (1005);
SELECT
CASE
WHEN COUNT(*) > 0 THEN 0
ELSE 1
END AS is_subset_of
FROM inner_set
LEFT JOIN outer_set ON inner_set.value = outer_set.value
WHERE outer_set.value IS NULL
여기서의 비결은 왼쪽이 그 자리에 합류한다는 것이다.inner_set
와 함께outer_set
생산하다NULL
의 값outer_set
그 후, 그것들을 카운트하고0
또는1
서브셋 여부에 따라 달라집니다.
언급URL : https://stackoverflow.com/questions/25015160/check-if-a-set-of-integers-is-a-subset-of-another-set-of-integers
'programing' 카테고리의 다른 글
MySQL/MariaDB: 표준 시간대와 함께 날짜 저장 (0) | 2022.11.22 |
---|---|
변경 시 선택한 파일의 전체 경로를 가져오는 방법변경 시 선택한 파일의 전체 경로를 가져오는 방법javascript, jquery-discript를 사용할까요?javascript, jquery-discript를 사용할까요? (0) | 2022.11.22 |
PHP에서 "Unable to allocate memory for pool"이 발생하는 원인은 무엇입니까? (0) | 2022.11.22 |
PHP의 숫자와 같은 문자를 증가시키는 방법은 무엇입니까? (0) | 2022.11.22 |
어레이 내의 아이템을 교환하는 방법 (0) | 2022.11.22 |