2016-09-21 82 views
0

我正在尝试构建一个查询,该查询将返回不像查询的所有行。MySQL - 获取不匹配的结果

我只是不能得到它的工作。

查询是:

SELECT * 
FROM EmailHistory 
WHERE Subject not like 
(
SELECT Date, Subject, Sender, Checks.Check FROM EmailHistory JOIN Checks ON EmailHistory.Subject LIKE CONCAT( '%', Checks.Check, '%') 
) 

所以基本上我想从EmailHistory都行,我不运行时,得到:当我尝试

SELECT Date, Subject, Sender, Checks.Check FROM EmailHistory JOIN Checks ON EmailHistory.Subject LIKE CONCAT( '%', Checks.Check, '%') 

我得到以下错误运行查询:#1241 - 操作数应该包含1列(s)

查询

SELECT Date, Subject, Sender, Checks.Check FROM EmailHistory JOIN Checks ON EmailHistory.Subject LIKE CONCAT( '%', Checks.Check, '%') 

正在工作,因为它应该,我得到的所有查询的主题匹配我检查从表Checks表字段的查询。

+1

您不能返回多个字段更多的子选择......应MySQL如何比较5个agains 1场? 使用WHERE字段NOT IN(SELECT field .. WHERE ..) –

+0

如果匹配字符串中的子字符串,而不是扫描表和列 – scaisEdge

回答

0

您不能使用LIKE与表匹配。嵌套查询返回一个包含多列的表。

您正试图将表'主题'与列匹配。

您需要查询的是:

SELECT * 
FROM EmailHistory 
WHERE Subject NOT IN 
(
SELECT Subject FROM EmailHistory JOIN Checks ON EmailHistory.Subject LIKE CONCAT( '%', Checks.Check, '%') 
)