2017-04-06 2 views
0

에 가입 :MySQL은 LEFT 내가이 같은 테이블이 목록

id | val1 | val2 
---------------- 
1 | 100 | 200 
2 | 200 | 100 
3 | 150 | 250 

그리고 같은 나는 API에서 목록을 가져올 수 : 나는 테이블에서 같은 데이터를 얻을 목록에서

((1, 100, 200), 
(2, 200, 101), 
(3, 150, 250)) 

거기에서 id2의 열 val2가 100에서 101로 변경되었음을 알 수 있습니다.

어떤 종류의 MySQL 쿼리가 목록의 두 번째 행을 반환할까요? 즉, 값 중 하나가 변경된 행이 변경되었습니다. .

val1과 val2 열을 모두 테스트해야합니다.

답변

1

당신은 목록을 여러 필드로 in() 연산자를 사용할 수 있습니다 :

select * from table 
where (id, val1, val2) not in ((1, 100, 200), 
           (2, 200, 101), 
           (3, 150, 250)) 
+0

감사를 당신의 대답. 쿼리는 id = 2, val1 = 200, val2 = 100을 반환합니다. id = 2, val1 = 200, val2 = 101을 반환하는 방법이 있습니까? –

+0

글쎄, MySQL에서이 작업을 수행하는 방법이 있지만 ID를 기반으로 애플리케이션 계층에서 작업을 수행하는 것이 더 쉽습니다. SQL에서 작동하게 만들려면 API 목록의 데이터를 임시 테이블에 삽입하거나 API 목록을 행별로 분리하고 일련의 'union'을 사용하여 sql에서 결합해야합니다. – Shadow