Mysql: я хочу сравнить результаты двух запросов и вернуть результаты

0

В MS Access у меня есть следующий запрос, и я хочу дублировать его в MysQl

SELECT New_Date_Sev54.*
FROM New_Date_Sev54 LEFT JOIN Old_Date_Sev54 ON New_Date_Sev54.[Expr1] = Old_Date_Sev54.[Expr1]
WHERE (((Old_Date_Sev54.Expr1) Is Null));

Запрос New_date:

SELECT perimeter.*, perimeter.IP, perimeter.QID, perimeter.Severity, [IP] & [QID] AS Expr1
FROM perimeter
WHERE (((perimeter.QID)<>38628 And (perimeter.QID)<>38675) AND ((perimeter.Severity)=5) AND ((perimeter.Date)=22118)) OR (((perimeter.Severity)=4));

Запрос старой даты:

SELECT perimeter.*, perimeter.IP, perimeter.QID, perimeter.Severity, [IP] & [QID] AS Expr1
FROM perimeter
WHERE (((perimeter.QID)<>38628 And (perimeter.QID)<>38675) AND ((perimeter.Severity)=5) AND ((perimeter.Date)=21918)) OR (((perimeter.Severity)=4));

В запросе ACCESS я в основном беру все результаты с новой датой и сравниваю их с результатами старой даты (за неделю до этого) и возвращаю все, что не было за неделю до этого.

База данных используется для быстрого выявления новых уязвимостей, существующих в периметре. И имеет такую форму

Date | IP| VulnID | VulnName | Severity | Threat | Resolution

То, что я пытался в mysql, использует сравнение "NOT IN" двух операторов select. Однако он не работает.

Я хочу знать все новые уязвимости, которые имеют серьезность 4 или 5, и которые не имеют идентификатор Vuln 32628

Спасибо

  • 0
    Почему бы вам не использовать левое соединение в MySQL?
Теги:

1 ответ

0

Поместите каждый запрос в временные таблицы:

CREATE TEMPORARY TABLE newVulns AS ([new date query])

CREATE TEMPORARY TABLE oldVulns AS ([old date query])

где [новый запрос даты] и [старый запрос даты] - ваши операторы выбора.

затем

SELECT * FROM newVulns n
LEFT JOIN oldVulns o
    ON n.VulnID = o.VulnID
WHERE o.VulnID IS NULL
    AND n.VulnID != 32628 
    AND n.Severity NOT IN (4, 5)

Я считаю, что это нужно делать.

Информация о создании таблицы тем, найденная в руководстве, и подробное визуальное представление объединений можно найти здесь. Я все время смотрю на них.

  • 0
    Администраторы баз данных - это нежные цветы, которые легко пугаются неожиданным появлением временных таблиц в своих системах. Вообще говоря, не следует их пугать, потому что это отстраняет их от питания.
  • 0
    Спасибо, что помогли. Мне пришлось сделать небольшую модификацию, но она работала нормально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню