2016-12-22 3 views
1

私は29章の本と30章の本を選択したいと思います。私は以下のコードを試みたが、それが唯一の29章ではなく、30、31を持っている書籍、32SQL文の行を取り出すことができません

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

を返すどのように私は、コード

+0

あなたはその本に29,30,31,32章がすべて含まれているはずですか? –

+0

いいえ私は別に本を選択すべきであることを意味します、本は第29章ではなく30であるかもしれません。少なくとも – Mysterio4

+0

の章を持つすべての本を選択したい、または各章ごとに別々のSQL文を書く必要があります。すなわち29章ではSQL、30などではもう1つ – Mysterio4

答えて

3

を書き換えることができ、コードは罰金のようですしてください。データに問題がある可能性がありますタイプ?列の章はどのような型に設定されていますか?

+1

ええ、あなたは正しいです。コードは問題ありません。私は間違ったデータを使っていたので、期待通りの結果が得られなかった – Mysterio4

1

Distinctを実行し、Genesisが返された場合は、すでにクエリ条件を満たしています。創世記は29以上あり、返されます。 30になると、すでにGenesisが返ってきたので、一度しか見ることはできません。あなたは〜以上の間で欲しいです。

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

私は、あなたがそれ以外の目的を達成する必要があるか、それともあなたのように見えるかはわかりません。 Chris Cavinessのコメントも参照してください。

EDIT:

聖書Bから

SELECT b.book WHERE章BETWEEN 29および35;

+0

何が元気? – Rahul

+0

私が思うに違いないのは、スタートレック3世の巨大な奇妙な奇怪な人物、「創世記」でした。 – johnny

+0

ええ、このコードもうまくいくはずですが、私は29と35の間で、より大きくはしたくありません。 – Mysterio4

0

あなたは

SELECT b.book FROM Bible b WHERE chapter between 29 to 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

を使用し、その後29〜35の間でレコードを取得します:

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

最初は、章と7つの整数値を比較します。 2つ目はチャプターを1つのストリングと比較し、チャプターはおそらく整数なので、ストリングを数値にキャストします。 MySQLでは、'29,30,31,32,33,34,35 'の数値は29です(先頭の数字が読み込まれ、カンマを超えたものはすべて無視されます)。

私はあなたの質問についてあなたが共有していないあなたのコードがあると思う。

私は、パラメータ化されたクエリを使用しようとしていて、章のリストと共に単一の文字列を渡したと思います。これはパラメータの仕組みではありません。 1つのパラメータは、値のリストではなく、単一のスカラー値だけを使用できます。

パラメータを使用する場合は、7つのパラメータプレースホルダを使用する必要があります。

+0

ビルド私はこれに注意しました、 'implode( '、'、$ arr)で値の配列を渡します。 – Mysterio4

+0

implode()の結果は文字列です。この値をSQLクエリと組み合わせる方法は示していません。パラメータ化されたクエリを使用していて、単一の文字列を渡す場合は、上記の2番目の例のようになります。最初の番号のみが使用されます。 –

関連する問題