2014-04-09 2 views
-1

저는 (88,90,100,200)과 같은 값을 포함하는 varchar 필드가 있고 다른 하나는 IN 절을 사용하여 첫 번째 필드의 두 번째 필드 필드는 빈 결과를 반환하지만 결과를 반환하면 88과 비교할 때 결과가 반환됩니다.SQL 쿼리에서 도움이 필요합니다

그래서 나는 무엇이 잘못하고 더 좋은 방법이 있는지 궁금합니다. 여기

당신이 가입 할 때 ON 절을 지정해야합니다

select * from user inner join category where parent_id IN (categories) 
  • PARENT_ID이 카테고리 테이블에있는 MySQL의 코드와 사용자 테이블
+0

parent_id IN (카테고리)가 아마도 (카테고리)? 또는 카테고리 란 무엇입니까? 편집 : nvm, 그냥 통해 UR을 편집 – Xatenev

+0

테이블의 구조를 추가 할 수 있습니까? – Philibobby

+0

테이블 구조가 없으면 실제로 조인하려는 항목이나 전혀 조인이 필요하지 않은 경우에도 여전히 모호합니다. 구조, 샘플 데이터 및 원하는 결과가 모든 차이를 만듭니다. – RobP

답변

0

의 종류입니다 어떻게 든 두 테이블에 "일치"하는 행을 찾고 있다는 것을 의미합니다. 어떤 열이 "이 목록의 값 중 하나"라는 값을 가진 단일 테이블의 모든 행을 원할 경우 IN을 사용합니다. 질문이 명확하지 않다으로

SELECT * FROM user INNER JOIN category ON user.someColumn = category.someOtherColumn // can add WHERE clause 

또는

SELECT * FROM user WHERE parent_id IN (88, 99, 100, 200) 

, 당신은 당신의 테이블 구조를 공유하지 않는 사용해야 쿼리 정확히 무엇을 말할 수 없다 : 그래서 이들은 모두 유효한 SQL입니다.

+0

이것은 2 개의 테이블간에 ON 절을 사용하는 데 필요한 INNER 조인입니다. parent_id는 INT (11)이며 범주 테이블에 있으며 범주는 사용자 테이블에서 VARCHAR (45)이며 두 번째 mysql 쿼리에서도 작동하지만 집합이 변수이면 – Joe

+0

이고 그 다음에이를 런타임에. 간단한 문자열 연결 또는 prepare() 및 매개 변수 바인딩 (선호하는 방법)을 사용하여이 작업을 수행 할 수 있습니다. – RobP

+0

"MySQL에서 JOIN, CROSS JOIN 및 INNER JOIN은 구문 상 동일합니다 (서로를 바꿀 수 있음). 표준 SQL에서는 INNER JOIN이 ON 절과 함께 사용되며 그렇지 않으면 CROSS JOIN이 사용됩니다." @http : //dev.mysql.com/doc/refman/5.0/en/join.html – RobP

관련 문제