使用自联接与嵌套PL / SQL查询

时间:2010-11-19 06:56:47

标签: database nested join

我需要执行这样的查询:

假设表格的列如 - <key>,<name>,<value>,我需要在以下条件下找到name ='NAME'的值。

  1. 密钥应位于keys_i中,其中name_i ='NAME_i'且value ='VALUE_i'。
  2. 密钥应位于keys_j中,其中name_j ='NAME_j'且value ='VALUE_j'。
  3. 密钥应位于keys_k中,其中name_k ='NAME_k'且value ='VALUE_k'。
  4. 我目前正在使用表单的嵌套查询:

      Select a.value from <table_name> a 
      where a.name='NAME' 
      and a.key IN(
        Select b.key 
        from <table_name> b 
        where (b.name = 'NAME_i' and b.value = 'VALUE_i') 
        and b.key IN(
               Select c.key 
               from <table_name> c 
               where (c.name = 'NAME_j' 
                and c.value = 'VALUE_j') 
               and c.key IN(
                   Select d.key 
                   from <table_name> d 
                   where (d.name = 'NAME_k' and d.value = 'VALUE_k'))));
    

    使用自我加入或任何其他技术是否有更通用的形式?我的表很小,并不是真正需要优化,但对于大型数据集来说,理想的解决方案是什么?

2 个答案:

答案 0 :(得分:0)

我认为这在很大程度上取决于数据库实现以及查询优化器将如何重写每种查询类型。不要以为您可以立即回答有关所有数据库系统的问题。

答案 1 :(得分:0)

我的情况是PL / SQL查询和Oracle DB。也有助于了解MySQL。