使用!=和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