Q:

Выборка записей, одновременно имеющих несколько значений

Есть таблица
+----------------+------------------------+
| item_option_id | select_option_value_id |
+----------------+------------------------+
|            164 |                     10 |
|            168 |                     16 |
|            168 |                     18 |
+----------------+------------------------+

Необходимо выбрать item_option_id, для которого select_option_value_id одновременно равен и 16, и 18...
Использовать в запросе OR, т.е.
select_option_value_id = 16 OR select_option_value_id = 18

или
select_option_value_id IN (16, 18)

не вариант, так как если select_option_value_id будет равен только 16, то item_option_id всё равно выберется.
Использовать AND не получается, так как при поиске по условию
select_option_value_id = 16 AND select_option_value_id = 18

MySQL найдя строку с select_option_value_id = 16 все остальные отбрасывает и условие проваливается, так как нет строки где select_option_value_id = 18.
Текущий запрос такой:
SELECT item_option_id
FROM items_select_options_values
WHERE select_option_value_id IN (16,18)
GROUP BY item_option_id;

Решение:
SELECT item_option_id
FROM items_select_options_values
WHERE select_option_value_id IN (16,18)
GROUP BY item_option_id
HAVING COUNT(item_option_id) = {{количество значений, в данном случае 2}};

A:

В общем у меня получилось как-то так (вроде работает):
SELECT
    TT.item_option_id
FROM
    TestTable TT
INNER JOIN
(
    SELECT
        item_option_id
        ,COUNT(*) Cnt
    FROM
        TestTable
    GROUP BY
        item_option_id
) X ON X.item_option_id= TT.item_option_id
WHERE
    select_option_value_id IN (16, 18)
GROUP BY
    TT.item_option_id
HAVING
    COUNT(*) = MAX(X.Cnt)

