簡體   English   中英

使用 DISTINCT 在 INNER JOIN 中獲取唯一的 SQL 列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM