在mysql中,我如何检查一个值是否在另一个表的多个字段中?
就像这样
SELECT * FROM table WHERE concat('%',value,'%') NOT LIKE IN(SELECT field FROM anothertable)但我不认为这是对的,对吗?
发布于 2012-02-28 05:22:09
下面的查询应该可以做到这一点。
SELECT DISTINCT t.*
FROM table t,
anothertable a
WHERE a.field NOT LIKE Concat('%', t.`value`, '%'); 发布于 2012-02-28 05:19:47
不,不完全是。
SELECT * FROM table WHERE NOT EXISTS (
SELECT * from anothertable WHERE field LIKE CONCAT('%',value,'%')
)可能会做这件事。假设value是table上的一列,field是anothertable上的相应列,它可能包含也可能不包含作为子字符串的value。
不过要注意,如果anothertable包含很多行,这将是一个非常慢的查询。我不认为有一个索引可以帮助你。对于table中的每一行,MySQL都必须对anothertable进行字符串比较表扫描。
发布于 2012-02-28 05:28:47
如果我正确理解了您的问题(假设您希望在“另一个表”中的两个字段(field1和field2)中找到表中的值):
SELECT *
FROM table t
WHERE EXISTS (SELECT Count(*) FROM anothertable WHERE field1 LIKE concat('%',t,value,'%') OR field2 LIKE concat('%',t,value,'%')https://stackoverflow.com/questions/9472368
复制相似问题