我想在这个 mysql 语句中使用哪个逻辑运算符?

发布于 2024-08-31 10:17:52 字数 234 浏览 5 评论 0原文

从表中选择 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

酷到爆炸 2024-09-07 10:17:52

您的第二条语句不会返回任何结果。一条记录不能同时包含 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.

情栀口红 2024-09-07 10:17:52

这不是“更好”方法的问题——只有第一种方法有效。即使您希望结果集中有 option=ans option=quest,WHERE 子句也会每行执行一次。所以你告诉 MySQL“给我一行,其中 option=quest 和 option=ans”,即选项同时是两个值,这是不可能的。您实际上想要获取其中任一值为 true 的行,这就是您使用 OR 的原因。

我认为这样读起来更好:

SELECT * FROM tablename WHERE option IN('ans','quest');

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:

SELECT * FROM tablename WHERE option IN('ans','quest');
独﹏钓一江月 2024-09-07 10:17:52

如果表示问题的行将 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 have option set to 'ans' then you should use option='ans' OR option='quest'";. Also a row cannot represent both question and answer so using AND will not select any rows.

欲拥i 2024-09-07 10:17:52

此选择将返回选项为 ansquest 的所有行,

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

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

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

This select will return all rows whos options is ans or quest

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

This select on the other hand will not return any rows since a column has only one of those values

SELECT * FROM tablename WHERE option='ans' AND option='quest'";
霊感 2024-09-07 10:17:52

如果您希望搜索返回答案和问题,请使用此方法:

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

也可以写为:

SELECT * FROM tablename WHERE option in ('ans','quest');

Use this if you want your search to return both answers and questions:

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

It can also be written:

SELECT * FROM tablename WHERE option in ('ans','quest');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文