我想在这个 mysql 语句中使用哪个逻辑运算符?
从表中选择 ans 和 quest 哪种更好?
SELECT * FROM tablename WHERE option='ans' OR option='quest'";
或者
SELECT * FROM tablename WHERE option='ans' AND option='quest'";
非常感谢!
Which is a better way to select ans and quest from the table?
SELECT * FROM tablename WHERE option='ans' OR option='quest'";
OR
SELECT * FROM tablename WHERE option='ans' AND option='quest'";
Thanks so much!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您的第二条语句不会返回任何结果。一条记录不能同时包含 option=ans 和 option=quest。
Your second statement is not going to return any results. A record cannot have option=ans and option=quest at the same time.
这不是“更好”方法的问题——只有第一种方法有效。即使您希望结果集中有 option=ans 和 option=quest,WHERE 子句也会每行执行一次。所以你告诉 MySQL“给我一行,其中 option=quest 和 option=ans”,即选项同时是两个值,这是不可能的。您实际上想要获取其中任一值为 true 的行,这就是您使用
OR
的原因。我认为这样读起来更好:
It's not a question of a 'better' way - only the first one works. Even though you want option=ans and option=quest in your results set, the WHERE clause is executed once per row. So you're telling MySQL "give me a row where option=quest and option=ans" i.e. option is two values at once, which is impossible. You actually want to get rows where either is true, which is why you use
OR
.I think this reads better:
如果表示问题的行将
option
设置为'quest'
并且包含答案的行将option
设置为'ans' 那么你应该使用
option='ans' OR option='quest'";
。此外,一行不能同时代表问题和答案,因此使用AND
不会选择任何行。If the rows that represent question have
option
set to'quest'
and rows with answer haveoption
set to'ans'
then you should useoption='ans' OR option='quest'";
. Also a row cannot represent both question and answer so usingAND
will not select any rows.此选择将返回选项为
ans
或quest
的所有行,另一方面,此选择不会返回任何行,因为列只有其中一个值
This select will return all rows whos options is
ans
orquest
This select on the other hand will not return any rows since a column has only one of those values
如果您希望搜索返回答案和问题,请使用此方法:
也可以写为:
Use this if you want your search to return both answers and questions:
It can also be written: