私は29章の本と30章の本を選択したいと思います。私は以下のコードを試みたが、それが唯一の29章ではなく、30、31を持っている書籍、32SQL文の行を取り出すことができません
にSELECT distinct book FROM `bible_kjv` WHERE chapter in (29,30,31,32,33,34,35);
を返すどのように私は、コード
私は29章の本と30章の本を選択したいと思います。私は以下のコードを試みたが、それが唯一の29章ではなく、30、31を持っている書籍、32SQL文の行を取り出すことができません
にSELECT distinct book FROM `bible_kjv` WHERE chapter in (29,30,31,32,33,34,35);
を返すどのように私は、コード
を書き換えることができ、コードは罰金のようですしてください。データに問題がある可能性がありますタイプ?列の章はどのような型に設定されていますか?
ええ、あなたは正しいです。コードは問題ありません。私は間違ったデータを使っていたので、期待通りの結果が得られなかった – Mysterio4
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;
あなたは
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;
SELECT book FROM Bible WHERE chapter BETWEEN 29 AND 35;
を使用し、その後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つのパラメータプレースホルダを使用する必要があります。
ビルド私はこれに注意しました、 'implode( '、'、$ arr)で値の配列を渡します。 – Mysterio4
implode()の結果は文字列です。この値をSQLクエリと組み合わせる方法は示していません。パラメータ化されたクエリを使用していて、単一の文字列を渡す場合は、上記の2番目の例のようになります。最初の番号のみが使用されます。 –
あなたはその本に29,30,31,32章がすべて含まれているはずですか? –
いいえ私は別に本を選択すべきであることを意味します、本は第29章ではなく30であるかもしれません。少なくとも – Mysterio4
の章を持つすべての本を選択したい、または各章ごとに別々のSQL文を書く必要があります。すなわち29章ではSQL、30などではもう1つ – Mysterio4