Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL의 다른 행에서 다른 조건을 충족하는 값을 선택하시겠습니까?

<시간/>

IN() 및 GROUP BY를 사용하여 다른 행에서 다른 조건을 충족하는 값을 선택할 수 있습니다. 구문은 다음과 같습니다 -

SELECT yourColumnName1 from yourTableNameWHERE yourColumnName2 IN(value1,value2,.....N)GROUP BY yourColumnName1HAVING COUNT(DISTINCT yourColumnName2)=conditionValue;

위의 구문을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -

mysql> create table DifferentRows-> (-> FirstRow int,-> SecondRow int-> );Query OK, 영향을 받는 행 0개(0.72초)

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

<미리>mysql> DifferentRows 값에 삽입(10,10);쿼리 OK, 영향을 받는 1개 행(0.15초)mysql> DifferentRows 값에 삽입(10,100);쿼리 OK, 영향을 받는 1개 행(0.17초)mysql> DifferentRows에 삽입 values(10,300);쿼리 OK, 1행 영향(0.16초)mysql> DifferentRows에 삽입 values(20,100);Query OK, 1행 영향(0.18초)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> 선택 *from DifferentRows;

다음은 출력입니다.

+----------+-----------+| 첫 번째 줄 | 두 번째 행 |+----------+----------+| 10 | 10 || 10 | 100 || 10 | 300 || 20 | 100 |+----------+-----------+4행 세트(0.00초)

다음은 서로 다른 행에서 서로 다른 조건을 충족하는 값을 선택하는 쿼리입니다. 이렇게 하면 SecondRow가 10, 100, 300인 모든 고유한 FirstRow 레코드가 제공됩니다.

mysql> Select FirstRow from DifferentRows-> 여기서 SecondRow IN(10,100,300)-> FirstRow별로 그룹화-> count(distinct SecondRow)=3;

다음은 출력입니다.

+----------+| 첫 번째 행 |+----------+| 10 |+-------------+1 행 세트(0.00초)