[英]Using DISTINCT to get a unique SQL column in an INNER JOIN
您好,我正在嘗試運行以下查詢來選擇每個 host_id 之一,但如果 host_id 相同,則過濾掉其他行。 但是,即使使用不同的,我也得到了所有的行。 有人可以幫我理解為什么會這樣嗎? 我如何才能改變這一點,以便只有 host_id 是唯一的? 謝謝你。
SELECT DISTINCT host_id hostid, host.description customer_name, data_template_data.data_source_path file, host.hostname host_name
FROM data_local
JOIN data_template_data ON data_local.id = data_template_data.local_data_id
LEFT JOIN host ON data_local.host_id = host.id
WHERE data_template_data.data_template_id = 41
AND host.disabled=''
AND data_template_data.data_source_path IS NOT NULL
您需要聚合或窗口函數。 可能最簡單的方法是:
with h as (
<your query here>
)
select h.*
from (select h.*,
row_number() over (partition by host_id order by host(id) as seqnum
from h
) h
where seqnum = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.