Вы можете достичь этого, используя GROUP BY
.
Во-первых, давайте сделаем выбор, как указано выше:
SELECT images
FROM myTable
WHERE begin_timestamp < 1546646400 AND images != 'default.png'
GROUP BY images;
Теперь, поскольку мы сгруппированы по images
, у нас есть доступ к агрегатным функциям . Мы можем добавить желаемый фильтр, например, в конце запроса:
HAVING COUNT(images) = 1
Обратите внимание, что поскольку мы сгруппировали по images
, это единственное, что мы можем напрямую запросить в части SELECT
. Если вы хотите выбрать любые другие поля, вы должны сделать это также через агрегатную функцию, например, SELECT images, MIN(some_field)
. Или, если images
является первичным ключом, используйте его в подзапросе или объединении.
Если вам нужно удалить дубликаты до с применением условия фильтра WHERE
, вы можете использовать такой подзапрос, как этот:
SELECT images FROM (
SELECT images, MIN(begin_timestamp) as begin_timestamp
FROM myTable
GROUP BY images
HAVING COUNT(images) = 1)
WHERE begin_timestamp < 1546646400 AND images != 'default.png';