MySQL 查询帮助 - 将 != 与 ANY 一起使用

标签 mysql

我有以下查询(MySQL):

SELECT col1, col2 FROM database1.table 
  ->WHERE col3 != ANY(SELECT col1 FROM database2.table) 
  ->ORDER BY this, that;

我曾希望这将允许我从 database1 中的表中选择 col1 和 col2,其中 col3(仍在 database1 中)不等于 database2 中的表中的 col1。

当然,这不会起作用,因为 SELECT col1 FROM database2.table 返回不止一行,所以如果等于 row1,那么它不等于 row2,所以它仍然返回。

关于如何以正确的方式做到这一点有什么想法吗?

最佳答案

使用NOT IN

SELECT col1, col2 FROM database1.table ->WHERE col3 NOT IN(SELECT col1 FROM database2.table) ->ORDER BY this, that;

但请记住,子查询在 MySQL 中没有优化,如果 database1.table 中有很多记录,这会很慢。更快的方法是使用 JOIN - SO 中有很多示例

关于MySQL 查询帮助 - 将 != 与 ANY 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651905/

相关文章:

mysql - Spring JPA不存储实体

mysql - 为什么将 datetime 从 postgres 写入 mysql 可以工作?

mysql - 使用 WS02 从多个 MySQL 数据库中读取相似的表

php - mySQL 连接无法正常工作

PHP 代码忽略日

php - mysql_real_escape_string() 对于十六进制编码数据不安全吗?

mysql - 访问 LIMIT 值作为 MySQL 中的列

mysql - SQL性能: Using OR is slower than IN when using order by

java - 没有 XML 的 Spring + Hibernate。错误 : NoSuchBeanDefinitionException

c# - 如何在 ASP.NET MVC 3 应用程序中通过 Linq 查询 MySQL 数据库?