SQL:辨識多列中的唯一組合
本文解決了在 SQL 中跨多個列查找唯一值組合的挑戰,特別關注更新標記為非活動的銷售記錄。 目標是識別當天未以相同價格發生的銷售,並將其狀態更新為「活動」。 一個簡單的 DISTINCT
子句是不夠的,因為它只適用於單列。
GROUP BY
子句提供了一個強大的解決方案:
<code class="language-sql">SELECT a, b, c FROM t GROUP BY a, b, c;</code>
這根據列 a
、b
和 c
的獨特組合對行進行分組,有效地實現與多列 DISTINCT
相同的結果(儘管 GROUP BY
提供了更多功能)。
對於更新銷售記錄,巢狀查詢是有效的:
<code class="language-sql">UPDATE sales SET status = 'ACTIVE' WHERE id IN ( SELECT id FROM sales S INNER JOIN ( SELECT saleprice, saledate FROM sales GROUP BY saleprice, saledate HAVING COUNT(*) = 1 ) T ON S.saleprice = T.saleprice AND S.saledate = T.saledate );</code>
此查詢使用子查詢來識別具有唯一 saleprice
和 saledate
組合(其中 COUNT(*) = 1
)的銷售額。 然後,外部查詢將這些銷售的 status
更新為「ACTIVE」。
透過使用 GROUP BY
和巢狀查詢,您可以根據跨多個列的值的唯一組合有效地管理和更新資料。 這為處理複雜的資料操作任務提供了一種強大而準確的方法。
以上是如何使用 DISTINCT 尋找 SQL 中多個列的唯一值組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!