나는 현재 나의 테이블의 다음 행이 있습니다MySQL을 선택 성명, 'IN'제
course_data:
user_id days <-- This is a varchar column.
405 1,3,5
을하고 난 다음 SELECT 문을 구현하기 위해 노력하고 있어요 : 기본적으로
SELECT usrID, usrFirst, usrLast, usrEmail
FROM tblUsers
WHERE usrID NOT IN
(
SELECT users.usrID
FROM
`course_data` courses,
`tblUsers` users
WHERE
days IN ('$day')
)
GROUP BY usrID
ORDER BY usrID
을, I $ day 변수에 '1, 3 또는 5'가 포함되어 있으면 해당 행 (사용자 405 포함)을 생략 할 수 있습니다.
예를 들어, $day = "1"
인 경우 "1"이 열 "1,3,5"에 있기 때문에 빈 쿼리를 반환해야합니다.
그러나이 경우는 아닙니다. $day = "1"
에도 불구하고 여전히 해당 행을 반환합니다.
행을 반환하지 않는 유일한 방법은 $day= "1,3,5."
입니다. 그러나 IN() 절이 내 변수의 일부를 취해 해당 열에 적용한다고 생각했습니다.
내가 여기서 잘못하고있는 것에 대한 통찰력이 있습니까? 감사.
감사합니다. 당신은 구조를 바꾸는 것이 옳습니다. 나는 앞서 가서 그렇게했다. 고맙습니다. – Dodinas
"이것은 가장 좋은 추측입니다."또 다른 (희망적으로 실현 가능한) 아이디어는 NOT EXISTS 서브 쿼리를 http://dev.mysql.com/doc/refman/5.1/en/exists-and-not-news에 설명 된대로 사용하는 것입니다. 'x NOT IN (subquery) '대신에 exist-subqueries.html – VolkerK
%는 1을 검색하기 위해 11을 주므로, 실제로 적합하지 않으므로이 답변은 원래 질문에는 실제로 적용되지 않습니다. theomega의 답변은 OP에 더 적합하게 보입니다. – Tarquin