Использование IN для выбора динамического списка имен программ, которым должен соответствовать компьютер, и данные существуют в базе данных для известного значения, результат при использовании:
GROUP BY id
HAVING COUNT(DISTINCT column_name) = count_of_list_values;
возвращает пустой набор результатов, когда он должен возвращать ожидаемое значение.
ПРИМЕЧАНИЕ: он работает при поиске одного элемента списка, эта проблема возникает, когда этот список расширяется до нескольких.
Множество поисков в Google, которые не дают ничего полезного ... кроме использования phpmyadmin, я пытался выяснить, почему он не работает.
Изолировал область, где кажется, что он задыхается и пробует разные вещи с помощью запроса, чтобы попытаться заставить его работать.
это раздел запроса, который я использую.
SELECT
am_software_archive.asset_name
FROM
am_software_archive
WHERE
LOWER(am_software_archive.sw_name) IN('nodejs', 'visio 2013')
GROUP BY
am_software_archive.id
HAVING
COUNT(
DISTINCT am_software_archive.sw_name
) = 2
Данные в этой таблице существуют и действительны, поэтому они должны работать ...
Таблица определения
CREATE TABLE IF NOT EXISTS am_software_archive(
id BIGINT NOT NULL UNIQUE,
asset_name VARCHAR(10) NOT NULL,
sw_name VARCHAR(150) NOT NULL,
sw_developer BIGINT NOT NULL,
sw_key VARCHAR(50) DEFAULT NULL,
sw_osver VARCHAR(15) DEFAULT NULL,
CONSTRAINT PK_software PRIMARY KEY(id, asset_name),
INDEX idx_sw_name_asset(asset_name,sw_name),
INDEX idx_sw_key_asset_name(asset_name,sw_key),
INDEX idx_sw_name_sw_key(sw_name,sw_key),
INDEX idx_osver_sw_name(sw_name,sw_osver),
INDEX idx_osver_asset_name(asset_name,sw_osver)
)
В моей базе данных ожидаемый результат будет:
"ABX50269"
Фактические результаты пусты, но не должны быть.