/ / MySQL DISTINCT nebude fungovať, ak sú niektoré stĺpce SELECT - mysql, sql, distinct

MySQL DISTINCT nebude fungovať, ak sú niektoré stĺpce SELECT - mysql, sql, distinct

Mám mysteriózne správanie pomocou programu DISTINCT na tabuľke MySQL a nemôžem to zistiť:

SELECT DISTINCT `deal_hash`,`city_name`
FROM `a`
WHERE `city_name` = "b"

... zobrazí mi požadovaný výstup s DISTINCT na deal_hash, Môžem tiež pridať ľubovoľný iný stĺpec do výberu a bude fungovať len v dvoch prípadoch DISTINCT zlyhá

SELECT DISTINCT `deal_hash`,`deal_link`
FROM `a`
WHERE `city_name` = "b"

A

SELECT DISTINCT `deal_hash`,`loaded_at`
FROM `a`
WHERE `city_name` = "b"

deal_link je varchár (255) a naložený INT (20).

odpovede:

2 pre odpoveď č. 1

select distinct selects distinct riadky, Nie je špecifické pre nasledujúci stĺpec.

Skúste použiť group by miesto:

select deal_hash, min(deal_link)
from a
where city_name = "b"
group by deal_hash

alebo

select deal_hash, max(loaded_at)
from a
where city_name = "b"
group by deal_hash

3 pre odpoveď č. 2

DISTINCT ukazuje odlišné riadky (hodnôt stĺpcov).

PostgreSQL je jediný DB, o ktorom viem, že podporuje DISTINCT ON, ktorý sa aplikuje na konkrétny stĺpec.