簡體   English   中英

如果只有一行結果,則選擇自我連接

[英]select self join if only one resulting row

對表執行SELF JOIN是否可行/經濟(對於本示例,我的表myTable有兩列pkfk ),如果只有一個結果記錄,則返回一條記錄? 我正在考慮類似以下的內容,但是only_one_row()是一個虛構的函數,需要將其替換為真實的東西:

SELECT fk
FROM myTable as t1
INNER JOIN myTable AS t2 ON t2.fk=t1.fk
WHERE t1.pk=1
AND only_one_row();

例如,如果myTable(id,fk)具有以下記錄,則僅生成一個記錄,而我選擇該記錄:

1 1
2 1
3 2

但是,如果myTable(id,fk)具有以下記錄,則會生成兩個“ 1”記錄,並且select不應返回任何行:

1 1
2 1
3 2
4 1

我可以使用PHP來這樣做,但如果可行的話,寧願只使用SQL。

使用對結果進行計數的HAVING子句。

SELECT fk
FROM myTable as t1
INNER JOIN myTable AS t2 ON t2.fk=t1.fk
WHERE t1.pk=1
HAVING COUNT(*) = 1

這個怎么樣:

SELECT fk
FROM myTable as t1
INNER JOIN myTable AS t2 ON t2.fk=t1.fk
WHERE t1.pk=1
GROUP BY fk
HAVING COUNT(fk) = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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