选择具有相同另一个值的记录(MySql)

时间:2014-07-05 15:30:10

标签: mysql select

我有一个mysql表,其中包含一列“my_set”,一个非唯一键,另一列是“my_element”,一个唯一键。每个my_sel值可以对应多个my_element值,而每个my_element只对应一个my_set。 theese两列的所有值都是无符号整数(11)。

从my_element值开始,在单个查询中没有嵌套选择,我需要查找具有相同my_set的所有其他my_elements。

我认为解决方案是嵌套选择

    select my_element 
    from table 
    where my_set = (
      select my_set 
      from table 
      where my_element = <elementValue>
    )

但是,正如我所解释的那样,我希望找到一种更好的,可能更快的方法来实现它而不进行子选择,因为由于db预定维护阶段中存在大量类似的查询,因此性能成为问题。

此外,可以理解更好的数据库结构建议,但目前不允许进行数据库重构。

2 个答案:

答案 0 :(得分:1)

我不是100%肯定你在问什么,但我会尽力回答我的理解。 我认为你需要使用self join来获取与给定元素相关的所有元素(它们与相同的my_set相关)。请尝试以下查询。

select t2.my_element 
from table t1
join table t2 on t1.my_set = m2.my_set and t2.my_element <> t1.my_element
where t1.my_element = "element";

如果不起作用。使用示例数据创建一个sql小提琴,这将使我们更容易。

答案 1 :(得分:0)

您可以尝试以下查询。如果我理解正确,使用两个表之间的左外连接来获得有序的set和元素集。

select 
    mysetid,
    myelementid
from 
    tableset a 
left outer join 
    tableset b
on 
    a.setid = b.setid
order by 
    a.setid,b.elementid

感谢。