2017-09-23 1 views
0

그래서 난이이 값이 아래 표와 PHP에서 하나 개의 변수 : 숫자의 위의 조합이 존재하는 경우 (14, 16)MySQL의 체크 조합

combo table

는 어떻게 확인 할 수 있습니다 표? 위의 콤보가 ID 3과 함께 존재합니다. 숫자 순서 (예 : "16,14"또는 "14,16")를 확인하고 싶지 않습니다.

혼란스러워하지 않기를 바랍니다.

+0

스택 오버 플로우에 오신 것을 환영합니다. 이 일을하기 위해 이미 무엇을 시도 했습니까? [좋은 질문을하는 방법] (https://stackoverflow.com/help/how-to-ask)을 검토하십시오. 스택 오버플로는 코딩 서비스가 아닙니다. *** 귀하의 문제를 조사하고 게시하기 전에 코드를 직접 작성하는 것이 좋습니다 ***. * 특정 *에 붙어 있다면, [Minimal, Complete, Verifiable example] (https://stackoverflow.com/help/mcve) 및 시도한 내용을 요약해서 포함시켜주십시오. – FluffyKitten

+0

3과 4 모두 14와 16을 가지고 있습니다. –

답변

2

당신은 COUNTHAVINGGROUP BY 필요합니다

SELECT id 
FROM tablename 
WHERE optid IN(14, 16) 
GROUP BY id 
HAVING COUNT(DISTINCT optid) = 2; 
  • WHERE optid IN(14, 16) 그 ID가 그 숫자를 보장합니다.
  • COUNT DISTINCT은 정확히 두 개의 문자가있는 id를 모두 제거합니다. optid.

demo

결과 :이 쿼리는 당신에게 적어도 14 and 16이 그 id을 줄 것이다 : 것을

| id | 
|----| 
| 3 | 
| 4 | 

참고. 그래서 당신이 정확히 14, 16, 더 이상 일을해야하는 사람들을 원하지만 경우에 당신에게 모두 3과 4

을 줄 것이다,이 시도 :

SELECT id 
FROM tablename 
WHERE optid IN(14, 16) 
    AND id not in (SELECT id from tablename where optid not in(14,16)) 
GROUP BY id 
HAVING COUNT(DISTINCT optid) = 2; 

이 당신에게 줄 것이다 :

| id | 
|----| 
| 3 | 

Demo

+0

대단히 감사합니다 !!! 2 일 나는 이것을 찾고있다 !!! :) –