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

您的第二条语句不会返回任何结果。一条记录不能同时具有 option=ans 和 option=quest。

于 2010-05-08T14:04:23.113 回答
4

这不是“更好”方式的问题 - 只有第一个有效。即使您希望在结果集中使用 option=ansoption=quest,WHERE 子句也会每行执行一次。所以你告诉MySQL“给我一行,其中option=quest和option=ans”,即option同时是两个值,这是不可能的。您实际上想要获取其中任一为 true 的行,这就是您使用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'";. 此外,一行不能同时代表问题和答案,因此使用AND不会选择任何行。

于 2010-05-08T14:05:46.590 回答
1

此选择将返回选项为ans或的所有行quest

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

另一方面,此选择不会返回任何行,因为一列只有其中一个值

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 回答