2

ans と quest を表から選択する場合、どちらがより良い方法ですか?

SELECT * FROM tablename WHERE option='ans' OR option='quest'";

また

SELECT * FROM tablename WHERE option='ans' AND option='quest'";

本当にありがとう!

4

5 に答える 5

7

2 番目のステートメントは結果を返しません。レコードに option=ans と option=quest を同時に含めることはできません。

于 2010-05-08T14:04:23.113 に答える
4

これは「より良い」方法の問題ではありません。最初の方法だけが機能します。結果セットにoption=ansoption=quest が必要な場合でも、WHERE 句は行ごとに 1 回実行されます。つまり、MySQL に「option=quest と option=ans の行を教えてください」と言っているのです。つまり、option は一度に 2 つの値であり、これは不可能です。実際には、どちらかが真である行を取得したいので、 を使用しますOR

これは読みやすいと思います:

SELECT * FROM tablename WHERE option IN('ans','quest');
于 2010-05-08T14:05:38.460 に答える
2

質問を表す行が にoption設定され'quest'、回答のある行が にoption設定されている'ans'場合は、 を使用する必要がありますoption='ans' OR option='quest'";。また、1 つの行で質問と回答の両方を表すことはできないため、 を使用してANDも行は選択されません。

于 2010-05-08T14:05:46.590 に答える
1

ansこの選択は、オプションがまたはであるすべての行を返しますquest

SELECT * FROM tablename WHERE option='ans' OR option='quest'";

一方、列にはこれらの値の1つしかないため、この選択では行が返されません

SELECT * FROM tablename WHERE option='ans' AND option='quest'";
于 2010-05-08T14:06:30.097 に答える
0

検索で回答と質問の両方を返したい場合は、これを使用します。

SELECT * FROM tablename WHERE option='ans' OR option='quest';

次のように書くこともできます。

SELECT * FROM tablename WHERE option in ('ans','quest');
于 2010-05-08T14:09:01.173 に答える