如何高效查詢多對多關聯組是否存在?

如何高效查詢多對多關聯組是否存在?

如何查詢多對多關聯組是否存在?

在多對多關聯關系中,一個元素可以與多個其他元素關聯。當需要查詢是否存在一個特定的關聯組時,可以采用以下方法:

例如,對于一個水果和籃子的關系,其中水果籃子包含水果和數量,需求是查詢是否存在一個籃子包含兩個蘋果和一個香蕉。

為了解決此問題,可以首先篩選出包含兩個蘋果和一個香蕉的籃子:

select bucket_id from 對應表 where fruit_id = 2 and count = 2

再根據篩選出的籃子id,排除包含其他水果的籃子:

select bucket_id from 對應表 group by bucket_id having count(1) = 2

最后,比較兩個查詢結果,即可確定是否存在滿足條件的關聯組:

select t3.bucket_id from  (   select t1.bucket_id from   (select bucket_id from 對應表 where fruit_id = 2 and count = 2) t1   inner join    (select bucket_id from 對應表 where fruit_id = 3 and count = 1) t2   on t1.bucket_id = t2.bucket_id ) t3, (   select bucket_id   from 對應表   group by bucket_id   having count(1) = 2 ) t4 where t3.bucket_id = t4.bucket_id

此方法對于數據量較小的情況是可行的,但對于大數據量,可能會有性能問題。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享