У меня проблема, похожая на SELECT DISTINCT, на которой по-прежнему отображаются дубликаты
Теперь я понимаю, что DISTINCT
применяется ко всей строке, поэтому в результате получается то, что должно,Я пытаюсь вернуть следующие строки, но я не хочу повторяющихся серийных номеров.Если есть дубликаты, я хотел бы просто взять последнюю запись.
Вот мой запрос:
USE [db1]
SELECT DISTINCT Serial.[Serial Number], Plugin.[Plugin Name] AS [Model], Revision.Revision AS [Firmware Revision], ConnectionType.[Connection Type] As [Connection]
FROM Station
JOIN Plugin ON Station.[Plugin ID] = Plugin.[Plugin ID]
JOIN Serial ON Station.[Serial ID] = Serial.[Serial ID]
JOIN Revision ON Station.[Revision ID] = Revision.[Revision ID]
JOIN Connection ON Station.[Connection ID] = Connection.[Connection ID]
JOIN ConnectionType On Connection.[Connection Type ID] = ConnectionType.[Connection Type ID]
WHERE Station.[MAC Address ID] = (select MAC.[MAC Address ID] from MAC where mac.[MAC Address] = '123456')
ORDER BY Serial.[Serial Number] DESC
Вот результат:
Итак, вы можете видеть, что есть две записи для X12132, потому что микропрограмма в этом устройстве была обновлена в какой-то момент, и DISTINCT был применен ко всей строке, но, к сожалению, приводит к дублированию серийных номеров.Что я должен сделать, чтобы решить эту проблему?
Я пытался сделать GROUP BY Serial.[Serial Number]
, но он дает мне следующую ошибку:
Msg 8120, Уровень 16, Состояние 1,Столбец строки 2 «Plugin.Plugin Name» недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.Сообщение 145, Уровень 15, Состояние 1, Строка 2 Элементы ORDER BY должны отображаться в списке выбора, если указано SELECT DISTINCT.
У меня такое ощущение, что, возможно, это как-то связано с моими объединениями,но я не смог понять это.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация о других таблицах.Любая помощь приветствуется.