Есть две таблицы.
Таблица 1. Список какого то контента
mysql> desc contents;
+------------------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+----------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
+------------------+----------------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
Tаблица 2. Список контента который не нужно отображать.
mysql> desc content_skip;
+-----------------+----------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+----------------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| content_id | int(11) | YES | | 0 | |
+-----------------+----------------------+------+-----+-------------------+----------------+
2 rows in set (0.00 sec)
Суть вопроса в следующем:
Нужно вернуть данные из Таблица 1 такие, которые не входят в таблицу Tаблица 2. Соответственно, есть два решения.
1.
select id from contents where id not in (select content_id from content_skip)
2. Выбрать сразу все id content_skip и потом в перечислении добавить.
select id from contents where id not in (3,4,5)
Первый запрос не нравится DEPENDENT SUBQUERY, а второй тем, что этих id может быть очень большая куча, что в итоге превысит размер пакета запроса.
Вопрос, что можно еще придумать наиболее?