Найти несоответствующие значения в одной строке таблицы - PullRequest
0 голосов
/ 13 марта 2019

У меня есть таблица с именем ноутбуки с несколькими строками. У меня есть 3 поля плюс 4 строки образца:

item_id  |  operating_system   |   item_title
-------+-------------+-------------
1     | Windows 10 | Toshiba with Windows 10 Pro and a mouse
2     | Windows 10 Pro | HP with Windows 10 Pro
3     | Linux | Dell with Windows 10
4     | iOS 11 | Random Apple laptop

Мне нужно решить следующие варианты использования:

  1. Получить несоответствия: Извлечь только те строки, в которых операционная система, отображаемая как часть item_title, НЕ является той, которая указана в operating_system. item_title будет содержать в качестве строки любую другую операционную систему в столбце operating_system. Это случай идентификаторов № 1 и № 3
  2. Строковые значения в других значениях: Некоторые строковые значения operating_system включены в другие большие значения. Например, кто-то может сказать, что id # 1 является верным, потому что в item_title отображается «Windows 10», НО ЭТО НЕТ, потому что фактическим значением является «Windows 10 Pro», так что это также несоответствие.

Честно говоря, я довольно заблокирован, как это сделать, я начал запрос как:

SELECT * FROM laptops
WHERE item_name NOT LIKE ('%'+operating_system+'%')

но мои знания SQL ограничены, и я не знаю, как выполнить 2 варианта использования, которые я представил.

1 Ответ

1 голос
/ 13 марта 2019

Как насчет:

SELECT
  item_name
FROM laptops
WHERE item_title NOT LIKE '%' || operating_system || '%'

Например, он разрешил бы:

WHERE 'HP with Windows 10 Pro' NOT LIKE '%Windows 10 Pro%'
...