MySQL NOT LIKE句子返回“喜欢”结果

问题描述 投票:0回答:1

我一直在试图解决这个问题,但是还没有成功。我有两个表,每个表都有一个varchar列:

Table 1: srch(word varchar)
Table 2: tags (tag varchar)

每个表中的值是:

srch: "joining", "tables", "snakes"
tags: "join", "table", "group"

我想要实现的是从搜索(srch)表中获取与标签表不匹配的单词,但是需要使用通配符。因此,当我使用LIKE时,它可以正常工作:

select s.word from srch s, tags t where s.word like concat(t.tag,"%") group by s.word

我需要获取与标签表不匹配的单词,在这种情况下,单词为“ snake”,因此,如果我尝试使用NOT LIKE,它将不起作用:

select s.word from srch s, tags t where s.word not like concat(t.tag,"%") group by s.word

使用这句话,它返回srch表中的所有值。

编辑:示例代码:

CREATE TABLE `srch` (
  `word` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `srch` VALUES ('joining'),('tables'),('snakes');

CREATE TABLE `tags` (
  `tag` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `tags` VALUES ('join'),('table'),('group');

此查询有任何提示吗?谢谢。

mysql wildcard sentence
1个回答
0
投票

您可以通过将WHERE NOT REGEXPGROUP_CONCAT结合使用来构成要过滤掉的所有标签的字符串。

SELECT word 
FROM srch
WHERE word NOT REGEXP (SELECT GROUP_CONCAT(tag SEPARATOR '|') FROM tags)
© www.soinside.com 2019 - 2024. All rights reserved.