使用!=和ANY

我有以下查询(MySQL):

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

我希望这可以让我从database1中的表中选择col1和col2,其中col3(仍在database1中)与database1中的表中的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;

但请记住,subselect没有在MySQL中进行优化,并且如果database1.table中有很多记录,这将会很慢。 更快的方法是使用JOIN - 在SO上有很多例子


WHERE col3 NOT IN (SELECT col1 FROM database2.table)

你可以使用NOT IN运算符来表示这个SELECT col1,col2 FROM database1.table - > WHERE col3 NOT IN(SELECT col1 FROM database2.table) - > ORDER BY this,that;

链接地址: http://www.djcxy.com/p/75325.html

上一篇: Using != with ANY

下一篇: mysql failed fulltext search with a particular word