5

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

就像是

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

但我认为这不太对,不是吗?

4

3 回答 3

2

以下查询应该这样做。

SELECT DISTINCT t.* 
FROM   table t, 
       anothertable a 
WHERE  a.field NOT LIKE Concat('%', t.`value`, '%'); 
于 2012-02-27T21:22:09.220 回答
2

不,不完全是。

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

可能会这样做。假设它value是 , 上的列table,并且是可能包含或不包含作为子字符串field的相应列。anothertablevalue

但是请注意——如果anothertable包含许多行,这将是一个非常慢的查询。我认为没有索引可以帮助您。MySQL 必须anothertabletable.

于 2012-02-27T21:19:46.703 回答
0

如果我正确理解了您的问题(假设您希望从“anothertable”的 2 个字段(field1 和 field2)中的表中找到值):

SELECT * 
FROM table t 
WHERE EXISTS (SELECT Count(*) FROM anothertable WHERE field1 LIKE concat('%',t,value,'%') OR field2 LIKE concat('%',t,value,'%')
于 2012-02-27T21:28:47.037 回答