我有一个具有实体属性值结构的表。例如,作为实体,我可以拥有不同的国家。我可以有以下属性:“位于”、“有边界”、“首都”。
然后我想找到所有那些“位于亚洲”和“与俄罗斯接壤”的国家。这样做的直接方法是使用实体将表与其自身连接起来,即连接列,然后使用where
但是,如果在实体列中有20行俄罗斯,那么在联合表中,我将有20*20=400行俄罗斯作为实体。每个国家都是这样。所以,关节表会很大。
用原来的表格提取所有位于亚洲的国家,然后提取所有与俄罗斯接壤的国家,然后使用这两组国家中的元素,会不会效率更高?

最佳答案

你不应该有大量的记录,所以这应该行得通

SELECT  a.entity,
    a.located_in,
    a.border
FROM    my_table a
WHERE   a.border in (SELECT b.entity FROM my_table b WHERE b.entity = 'RUSSIA' )
AND     a.located_in = 'ASIA'

关于mysql - 有什么比在MySQL中联接表更有效的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4172166/

10-16 01:27