my_table 有 4 列:id integer, value integer, value2 integer, name character varying
我想要所有记录:
- 与名称为“a_name”的记录具有相同的值2
- 有一个字段值低于名称为“a_name”的记录之一
我通过以下查询获得了令人满意的结果:
select t.id
from my_table as t
where t.value < ( select value from my_table where name = 'a_name')
and s.value2 = (select value2 from my_table where name = 'a_name');
但是是否可以使用 sql 连接来简化此查询?
加入同 table 在我的脑海里还是太复杂了。我试着用这个例子来理解。
到目前为止,我所尝试的是一个充满重复的结果:
select t2.id
from my_table as t
inner join my_table as t2 on t2.value2 = t.value2
where t2.value < ( select value from my_table where name = 'a_name');
最佳答案
我认为这会解决您的问题。
select t1.id
from my_table as t1
join my_table as t2
on t1.value2 = t2.value2
and t2.name = 'a_name'
and t1.value < t2.value
关于sql - 如何使用 sql 连接简化此查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15583824/