2016-12-22 1 views
1

제 29 장 책과 30 장 책 등을 선택하고 싶습니다. 나는 아래의 코드를 시도했지만 그것은 단지 장 29이 아닌 30, 31이 책,SQL 문의 행을 검색 할 수 없습니다.

SELECT distinct book FROM `bible_kjv` WHERE chapter in (29,30,31,32,33,34,35); 

(32)는 어떻게 코드는 잘 될 것 같다 코드를

+0

당신은이 책이 모든 장 29,30,31,32를 가져야한다는 것을 의미합니까? –

+0

아니오 책을 별도로 선택해야한다는 의미는 아니며 책은 29 장이 아니라 30 장이 될 수 있습니다. 적어도 – Mysterio4

+0

장이있는 모든 책을 선택하거나 각 장마다 별도의 SQL 문을 작성해야합니까? 즉 29 장에 대한 SQL, 30에 대한 또 다른 – Mysterio4

답변

3

을 다시 작성할 수 있습니다하십시오를 반환합니다. 데이터에 문제가있을 수 있습니까 유형? 'chapter'열의 유형은 무엇입니까?

+1

네가 맞아. 코드는 괜찮습니다. 잘못된 데이터를 사용하여 예상대로 결과를 얻지 못했습니다. – Mysterio4

1

Distinct을 실행하고 Genesis가 반환되면 이미 쿼리 조건을 만족하게됩니다. 창세기는 29 세 이상이며 반환됩니다. 30을 치면 이미 Genesis를 반환 했으므로 한 번만 볼 수 있습니다. 당신은 그 이상이나 그 이상을 원합니다.

SELECT b.book FROM Bible b WHERE chapter >= 29; 

나는 당신이 그것을 달성하기 위해 무엇을 필요로하는지 또는 당신이 그것을 상상할 것 같은 것을 확신 할 수 없습니다. 또한 Chris Caviness 코멘트를 참조하십시오.

EDIT :

성경 B FROM

SELECT b.book WHERE BETWEEN 제 29, 35;

+0

대체 왜? Genesis * !!! – Rahul

+0

내가 생각할 수 있었던 것은 Star Trek III의 거대한 괴물이었다. "Genesis!" – johnny

+0

예이 코드도 작동해야하지만, 29와 35 사이에서 더 크지 않기를 원합니다. – Mysterio4

0

당신은이 쿼리를

SELECT b.book FROM Bible b WHERE chapter between 29 to 35; 

를 사용하는 29 ~ 35 사이에 기록을 얻을 당신은 29 ~ 35의 외부 기록을 원하는 경우 다음

SELECT b.book FROM Bible b WHERE chapter not between 29 to 35; 
0
SELECT book FROM Bible WHERE chapter BETWEEN 29 AND 35; 
1

사용이 있다는 사실을 양지해야합니다 :

SELECT distinct book FROM `bible_kjv` WHERE chapter in (29,30,31,32,33,34,35); 

첫 번째는 챕터를 7 개의 정수 값과 비교합니다. 두 번째는 챕터를 단일 문자열과 비교하며 챕터는 아마도 정수이므로 문자열을 숫자 값으로 변환합니다. MySQL에서 '29, 30,31,32,33,34,35 '의 숫자 값은 29입니다 (선행 숫자를 읽고 쉼표 이후의 모든 것을 무시합니다).

질문에 대해 공유하지 않은 코드에 대한 의문점이 더 있습니다.

나는 당신이 매개 변수화 된 쿼리를 사용하려고하고 챕터 목록과 함께 단일 문자열을 전달했다고 생각합니다. 이것은 매개 변수가 작동하는 방식이 아닙니다. 하나의 매개 변수는 값 목록이 아닌 단일 스칼라 값만 사용할 수 있습니다.

매개 변수를 사용하려면 7 개의 매개 변수 자리 표시자를 사용해야합니다.

+0

감사합니다. Bill,이 점에 유의했습니다. implode (',', $ arr)와 함께 값 배열을 전달합니다. – Mysterio4

+0

좋아, implode()의 결과는 문자열입니다. 이 값을 SQL 조회와 결합하는 f}을 표시하지 않았습니다. 매개 변수화 된 쿼리를 사용하고 단일 문자열을 전달하는 경우 숫자 문자열 주위에 따옴표를 넣는 것처럼 위의 두 번째 예제와 같습니다. 첫 번째 번호 만 사용됩니다. –

관련 문제