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ď č. 1select distinct
select
s 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.