MySQL - NOT IN LIKE



在mysql中,如何检查一个值是否在另一个表的多个字段中?

类似的东西

SELECT * FROM table WHERE concat('%',value,'%') NOT LIKE IN(SELECT field FROM anothertable)

但我认为这不太正确,是吗?

下面的查询应该可以完成。

SELECT DISTINCT t.* 
FROM   table t, 
       anothertable a 
WHERE  a.field NOT LIKE Concat('%', t.`value`, '%'); 

不,不完全是。

SELECT * FROM table WHERE NOT EXISTS (
    SELECT * from anothertable WHERE field LIKE CONCAT('%',value,'%')
)

假设valuetable上的列,而fieldanothertable上的相应列,该列可能包含也可能不包含value作为子串。

不过,请注意,如果anothertable包含许多行,那么这将是一个非常缓慢的查询。我认为没有一个索引可以帮助你。MySQL将不得不对table中的每一行进行anothertable的字符串比较表扫描。

如果我正确理解您的问题(假设您希望在"anothertable"中的2个字段(字段1和字段2)中找到表中的值):

SELECT * 
FROM table t 
WHERE EXISTS (SELECT Count(*) FROM anothertable WHERE field1 LIKE concat('%',t,value,'%') OR field2 LIKE concat('%',t,value,'%')

相关内容

  • 没有找到相关文章

最新更新