Несмотря на то, что выбранный ответ работает, он неэффективен, так как БД необходимо выполнить два запроса для внутреннего запроса, а затем снова по внешнему запросу. Наиболее эффективным и эффективным запросом является LEFT JOIN, который устраняет необходимость во втором запросе.
SELECT b.* FROM names AS n LEFT JOIN blacklist_names AS b on n.id=b.id WHERE b.id IS NULL;
Вы можете использовать такие таблицы, как я, или нет. Я сделал это, чтобы сделать код короче.
Что делает запрос, это сопоставление всех идентификаторов, найденных в обеих таблицах, а затем исключение их из результатов, взятие чего осталось от «списка всех имен», которого нет в «черном списке».
EDIT: В соответствии с автором, помещая решение здесь, чтобы выделить его из комментариев.
SELECT spotify.ID,spotify.land,spotify.song,spotify.link_id,spotify.pos1 FROM spotify LEFT JOIN spotify_blacklist ON (spotify.link_id = spotify_blacklist.URL) WHERE spotify_blacklist.URL IS NULL ORDER BY spotify.song ASC
Пожалуйста, укажите схему таблицы, такую как идентификатор типа. – Shawn