2017-02-06 3 views
0

약간 문제가 있습니다. 그래서 같은 이름, ID와 다른 구조를 가진 테이블이 :SQL : 동일한 ID를 가진 여러 행 선택

ID | Name| RealID| Geometry| 
========================================== 
1 |  Hampshire  | 3 | 0762453... 
2 |  Hampshire  | 3 | 0156245... 
3 |  Salt Lake  | 2 | 312455... 
4 |  Hampshire  | 3 | 016422.... 

내가 ID의 목록을 기반으로하는 모든 햄프셔 행을 선택하는 필요가있다. 당신이 볼 수 있듯이 내 테이블은 햄프셔에 대해 다른 기하학을 가지고 있습니다. 나는 그 (것)들의 모두에서 다만 얻는 1 개의 ID에 대하여 다만 비교해서 어떻게 든 그들 모두를 필요로한다.

Java에서 ID 목록을 가져옵니다. 지금까지 하나의 ID (3)로 된 목록 일뿐입니다. 이렇게

:

Select * from table where RealID = any(:listOfIds) 

그것은 단지에 상관없이 나에게 하나 개의 행을 반환하지 않습니다 내가이 목록에 햄프셔의 ID에 보낼 경우 (3). 나는 다음과 같은 것을 시도했다.

Select * from table where RealID IN (any(:listofids)) 

그러나 구문이 틀리며, 나의 목표를 달성하기 위해 무엇을해야할지 모르겠다.

+2

': listOfIds'는 유효한 JDBC 자리 표시자가 아닙니다. 자바 코드를 보여주십시오. –

답변

2

당신은 예를 들어 다음과 같은 구문

SELECT * FROM table WHERE RealID in (listofids) 

을 시도 할 수 있습니다 :

SELECT * FROM table WHERE RealID in (3,2,6....) 

이 또한 그럴 필요 할 수 있습니다

SELECT * FROM table WHERE FIND_IN_SET('3', RealID); 
+0

감사합니다. 나는 지금 모든 햄프셔를 가지고 있고 내가 원하는 것을 할 수있다. 고맙습니다. –

+0

항상 환영합니다 :) –

1

당신은 어떤 일이 안전하고 깨끗한 확인하려면 코드는 다음과 같이 사용할 수 있습니다.

0 당신이해야

루프 때문에 쿼리는 다음과 같아야 목록을 던져 된 PreparedStatement를 사용하는이 안전한 방법입니다

Select * from table where RealID IN(?, ?, ?, ?, ?) 

.

0

이 것을 시도해보십시오.

Select * from problem where RealID IN (?,?,?); 

? = 여기에 귀하의 요구 사항에 따라 RealID을 넣으십시오. 예 :

관련 문제