Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-不是像这样_Mysql_Sql Like_In Operator_Not Operator - Fatal编程技术网

MySQL-不是像这样

MySQL-不是像这样,mysql,sql-like,in-operator,not-operator,Mysql,Sql Like,In Operator,Not Operator,在mysql中,如何检查一个值是否位于另一个表的多个字段中 差不多 SELECT * FROM table WHERE concat('%',value,'%') NOT LIKE IN(SELECT field FROM anothertable) 但我认为这不太对,是吗?不,不太对 SELECT * FROM table WHERE NOT EXISTS ( SELECT * from anothertable WHERE field LIKE CONCAT('%',value,'

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

差不多

SELECT * FROM table WHERE concat('%',value,'%') NOT LIKE IN(SELECT field FROM anothertable)
但我认为这不太对,是吗?

不,不太对

SELECT * FROM table WHERE NOT EXISTS (
    SELECT * from anothertable WHERE field LIKE CONCAT('%',value,'%')
)
我可能会做的。假设
上的一列,而
字段
另一个表
上的相应列,该表可能包含也可能不包含作为子字符串的


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

下面的查询应该可以做到这一点

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

如果我正确理解您的问题(假设您希望在“另一个表”的两个字段(字段1和字段2)中的表中查找值):


我想这会很慢,但我只是在运行一个一次性维护查询。顺便说一句,我只是更新了一个输入错误——我在子查询中用了“不喜欢”代替了“喜欢”。这会更快还是更好?是的,如果字段和值被索引,它会快得多。我比较了两者,这个比第一个快4倍。哦,哇,在最后一次修改之后,它几乎是瞬间的。
SELECT * 
FROM table t 
WHERE EXISTS (SELECT Count(*) FROM anothertable WHERE field1 LIKE concat('%',t,value,'%') OR field2 LIKE concat('%',t,value,'%')