ans と quest を表から選択する場合、どちらがより良い方法ですか?
SELECT * FROM tablename WHERE option='ans' OR option='quest'";
また
SELECT * FROM tablename WHERE option='ans' AND option='quest'";
本当にありがとう!
ans と quest を表から選択する場合、どちらがより良い方法ですか?
SELECT * FROM tablename WHERE option='ans' OR option='quest'";
また
SELECT * FROM tablename WHERE option='ans' AND option='quest'";
本当にありがとう!
2 番目のステートメントは結果を返しません。レコードに option=ans と option=quest を同時に含めることはできません。
これは「より良い」方法の問題ではありません。最初の方法だけが機能します。結果セットにoption=ansとoption=quest が必要な場合でも、WHERE 句は行ごとに 1 回実行されます。つまり、MySQL に「option=quest と option=ans の行を教えてください」と言っているのです。つまり、option は一度に 2 つの値であり、これは不可能です。実際には、どちらかが真である行を取得したいので、 を使用しますOR
。
これは読みやすいと思います:
SELECT * FROM tablename WHERE option IN('ans','quest');
質問を表す行が にoption
設定され'quest'
、回答のある行が にoption
設定されている'ans'
場合は、 を使用する必要がありますoption='ans' OR option='quest'";
。また、1 つの行で質問と回答の両方を表すことはできないため、 を使用してAND
も行は選択されません。
ans
この選択は、オプションがまたはであるすべての行を返しますquest
SELECT * FROM tablename WHERE option='ans' OR option='quest'";
一方、列にはこれらの値の1つしかないため、この選択では行が返されません
SELECT * FROM tablename WHERE option='ans' AND option='quest'";
検索で回答と質問の両方を返したい場合は、これを使用します。
SELECT * FROM tablename WHERE option='ans' OR option='quest';
次のように書くこともできます。
SELECT * FROM tablename WHERE option in ('ans','quest');