2016-09-21 7 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 колонку (ы)

в запрос

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

работает как следует, я получаю запрос по всем запросам, где объект соответствует полям, которые я проверяю из таблицы Checks.

+1

вы не можете вернуть более одного поля в суб-выбора ... как бы MySQL сравнить 5 полей Agains 1 поле? use WHERE field 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, '%') 
)