code

mysql WHERE 절에서 "IN"의 값을 동적으로 추가하는 방법은?

starcafe 2023. 9. 15. 21:15
반응형

mysql WHERE 절에서 "IN"의 값을 동적으로 추가하는 방법은?

해당 쿼리에 매개 변수를 동적으로 추가하는 쿼리를 작성했습니다.다음은 제가 작성한 문의입니다.

     var sql ="SELECT s.contactId,s.name,s.phone,s.isDistributor,s.distToBeStatus,l.id AS languageId,l.name AS languageName,l.languageCode,l.nativeName,l.countryCode,c.id AS cityId,c.name AS cityName,c.state,c.country 
FROM syncContacts s LEFT JOIN languages l ON s.languageCode=l.languageCode 
LEFT JOIN cities c ON s.cityId=c.id WHERE s.distId=? AND s.distToBeStatus=?
 AND s.isDistributor =? AND s.languageCode IN (?) AND s.cityId IN (?)
 AND s.ageGroupId IN (?) AND s.occupationId IN (?) AND s.traitsId IN (?)"

var parameters =['2',1,0,'1','1','1','1','1']
var rows = await connection.query(sql,parameters)
 

현재 저는 Express의 Node.js에서 여러 필터로 연락처 목록을 필터링하는 기능이 있는 어플리케이션을 개발하고 있습니다.그래서 필요한 필터에 따라 동적으로 위 쿼리를 작성하고 있습니다.예를 들어, 힌디어와 영어, 도시 방글라데시와 고치의 모든 연락처를 가져와야 한다면 말입니다.그러면 IN(?)에 여러 값을 동적으로 추가해야 합니다.s.cityId IN(?) AND s.languageCode IN(?)필터에 따라 변경됩니다.그래서 위의 코드 파라미터들은 동적으로 생성될 것입니다.제가 필요한 것은 IN(?)에 여러 값을 추가하고 싶습니다.예를 들어 위 코드에서 여러 도시의 결과가 필요한 경우 여러 값을 추가하려면 어떻게 해야 합니까?s.cityId IN(?)역동적으로?현재 하나에 대해 여러 값을 추가할 수 없습니다.IN(?)query. 위의 코드는 in에서 하나의 값에 대해 정상적으로 작동하고 있습니다.IN(?)질의.

위 필터에 대한 원시 쿼리는 다음과 같습니다.

SELECT s.contactId,s.name,s.phone,s.isDistributor,s.distToBeStatus,l.id AS 
languageId,l.name AS languageName,l.languageCode,l.nativeName,l.countryCode,c.id AS 
cityId,c.name AS cityName,c.state,c.country FROM syncContacts s LEFT JOIN languages l ON 
s.languageCode=l.languageCode LEFT JOIN cities c ON s.cityId=c.id WHERE distId="2" AND s.distToBeStatus="1"
 AND s.isDistributor ="0" AND s.languageCode IN (1,2)
 AND s.cityId IN (1,2) AND s.ageGroupId IN (1,2)
 AND s.occupationId IN (1,2) AND s.traitsId IN (1,2)

해결책을 찾을 수 있도록 도와주시겠습니까?미리 감사드립니다.

언급URL : https://stackoverflow.com/questions/64014842/how-to-dynamically-add-values-in-in-in-mysql-where-clause

반응형