我有一個看起來像這樣SQL查詢需要創造性的解決方案
object_id type
1 ISSN
1 ISBN
2 ISSN
2 ISSN
3 ISSN
3 KSBN
3 KSBN
4 ISSN
4 ISBN
我需要找到所有同時具有在同一查詢ISSN和ISBN的數據。
我發現的溶液使用此代碼
select *
from table
where OBJECT_ID in
(
SELECT K.OBJECT_ID
FROM tableK
WHERE K.`TYPE` IN ('ISSN', 'ISBN')
GROUP BY K.OBJECT_ID
HAVING count(distinct K.TYPE) = 2
)
然而,它需要較長的時間來運行,因爲數據集很大。有沒有不使用嵌套查詢的選項。
當我把的objectID的直接運行幾乎立即
select *
from table
where OBJECT_ID in
(
1,4
)
它運行得更快,因爲它不執行選擇多次。但是當我嘗試將輸出保存爲變量時,它會因爲返回多行而崩潰。
是否有任何類型的連接可以在較小的數據集上完成,因爲在整個表上進行反射連接需要超過10分鐘。
見http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very -simple-sql-query – Strawberry