结合多个SQL查询

目前,为了获取我需要的数据,我需要执行多个SQL语句:

SELECT pubkey.pubkey_id 
FROM pubkey 
WHERE pubkey.pubkey_hash = (input data [1])

SELECT txin_corr.tx_id 
FROM txin_corr 
WHERE txin_corr.pubkey_id = (pubkey.pubkey_id from previous query [max. 1])

SELECT txin_corr.pubkey_id 
FROM txin_corr 
WHERE txin_corr.tx_id = (txin_corr.tx_id from prev.qry. [n])

SELECT pubkey.pubkey_hash
FROM pubkey 
WHERE pubkey.pubkey_id = (txin_corr.pubkey_id from prev.qry. [n])

第一个查询没问题,因为我只需要执行一次.但我想知道是否有办法结合(至少)最后三个查询.由于数据库相当大(约20 GB),我认为“好的查询”可能会大大加快速度.

我正在做的是:对于给定的pubkey_id / pubkey_hash,从同一行中获取包含此pubkey_id的txin_corr中的所有tx_ids.然后,从txin_corr获取所有pubkey_ids,其中行包含检索到的tx_ids.最后,获取现在检索到的pubkey_ids的所有pubkey_hash.

最佳答案 前面的答案是正确的:关键是多次将表连接在一起.但是,那里有一对多的关系,所以需要留下外连接,而不仅仅是内连接.

SELECT pk2.pubkey_hash
FROM   pubkey pk
INNER JOIN txin_corr tc ON pk.pubkey_id = tc.pubkey_id
LEFT OUTER JOIN txin_corr tc2 ON tc.tx_id = tc2.tx_id
LEFT OUTER JOIN pubkey pk2 ON tc2.pubkey_id = pk2.pubkey_id
WHERE pk.pubkey_hash = (input data)
点赞