首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL - NOT IN LIKE

MySQL - NOT IN LIKE
EN

Stack Overflow用户
提问于 2012-02-28 05:14:09
回答 3查看 8.3K关注 0票数 5

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

就像这样

代码语言:javascript
复制
SELECT * FROM table WHERE concat('%',value,'%') NOT LIKE IN(SELECT field FROM anothertable)

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-28 05:22:09

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

代码语言:javascript
复制
SELECT DISTINCT t.* 
FROM   table t, 
       anothertable a 
WHERE  a.field NOT LIKE Concat('%', t.`value`, '%'); 
票数 2
EN

Stack Overflow用户

发布于 2012-02-28 05:19:47

不,不完全是。

代码语言:javascript
复制
SELECT * FROM table WHERE NOT EXISTS (
    SELECT * from anothertable WHERE field LIKE CONCAT('%',value,'%')
)

可能会做这件事。假设valuetable上的一列,fieldanothertable上的相应列,它可能包含也可能不包含作为子字符串的value

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

票数 2
EN

Stack Overflow用户

发布于 2012-02-28 05:28:47

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

代码语言:javascript
复制
SELECT * 
FROM table t 
WHERE EXISTS (SELECT Count(*) FROM anothertable WHERE field1 LIKE concat('%',t,value,'%') OR field2 LIKE concat('%',t,value,'%')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9472368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档