我有一個包含大約 8,000 行的表。
它有 15 列,其中之一是“參考編號”。
我的目標是找到所有相互匹配的行,對于匹配的行,找出參考號是什么。
參考編號有點隨機,與其余資料沒有真正的關系。
這是我到目前為止的 SQL,它為我提供了所有匹配的行和計數:
select
count(*),
component,
privileges,
protocol,
authority,
score,
means,
difficulty,
hierarchy,
interaction,
scope,
conf,
integrity,
availability,
version
from
data
group by
component,
privileges,
protocol,
authority,
score,
means,
difficulty,
hierarchy,
interaction,
scope,
conf,
integrity,
availability,
version
having count(*) >1
order by count(*) desc;
我錯過了查詢的行,因為如果我包含它,我無法讓它按預期作業,因為reference_number我需要作為該查詢命中的每一行的參考號。因此,如果與查詢匹配的一組列的 count(*) 為 23,那么所有 23 列的參考編號是多少。這是我的問題,我不確定我是否可以使用 SQL 做到這一點。
我可以創建新表或視圖,我覺得子查詢一開始可能會有所幫助,例如
select reference_number from
(select
count(*),
component,
privileges,
protocol....
ETC
但這失敗了:
ERROR: subquery in FROM must have an alias
任何幫助表示贊賞。(如果有幫助,我正在使用 Postgresql)。
uj5u.com熱心網友回復:
一種選擇是使用 string_agg() 函式。
函式簽名是
string_agg(值文本,分隔符文本)→文本。將非空輸入值連接成一個字串。第一個值之后的每個值前面都有相應的分隔符(如果它不為空)。
因此,在您的原始查詢中,添加一個帶有 string_agg(reference_number, ',') 的列。這將為您提供每行的參考編號的逗號分隔串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/484229.html
標籤:sql PostgreSQL
